Filtros y silenciadores en los logs de Rails
Posted: Noviembre 30th, 2008 | Author: Juan Lupión | Filed under: blog | Tags: logging, rails |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.

¡¡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
:)