Filtros y silenciadores en los logs de Rails

Posted: Noviembre 30th, 2008 | Author: Juan Lupión | Filed under: blog | Tags: , |

Una de las novedades de Rails edge es la inclusión de filtros y silenciadores en las trazas de nuestra aplicación. Los filtros permiten cambiar al vuelo contenidos de las líneas de traza en base a expresiones regulares y los silenciadores, más radicales, se limitan a tragarse las líneas de log que lo activen.

En Rails < = 2.2, si hacemos lo siguiente

   $ rails test-exception
   $ cd test-exception
   $ script/generate scaffold blog
   $ script/server

Y lanzamos un navegador hacia http://localhost:3000/blogs obtendremos una bonita traza de error como esta.

Sin embargo, en las versiones posteriores a Rails 2.2 la traza de error es mucho más escueta y por tanto más fácil de leer porque omite información que por lo general es poco necesaria. He aquí la nueva traza.

Como era de imaginar la cosa no acaba aquí sino que podremos configurar los filtros y silenciadores a nuestro gusto si editamos el fichero config/initializers/backtrace_silencers. Por ejemplo, con el siguiente cambio y con nuestra configuración de Rails

Rails.backtrace_cleaner.add_filter {|line|
    line.sub(/(\/opt\/local\/lib\/ruby\/gems\/1.8\/gems\/)([a-z]+)-([0-9.]+)\/(.*)/) {|match| " #{$2} (#{$3}) :#{$4}"}
}

conseguiremos que las trazas generadas por el código de las gemas aparezca mostrando el nombre de la gema y su versión. Puede verse aquí la traza que se generaría.


One Comment on “Filtros y silenciadores en los logs de Rails”

  1. 1 Gaizka said at 5:26 pm on Noviembre 30th, 2008:

    ¡¡Genial el filtro!!

    Y a DHH parece que le gusta también, ¿eh?

    http://afreshcup.com/2008/11/29/rails-23-backtrace-silencing/#comment-692

    :)


Leave a Reply