2011-06-03 27 views
8

Quiero tener un anotador personalizado para mi aplicación, ¿cuál de los registros del curso a un archivo diferente, alguien hizo una pregunta: Setting up the logger in rails 3¿Registrador personalizado en Rails 3?

Pero yo quiero tener un registrador de la que puedo llamar con mi propio nombre de la clase como:

StatusLogger.info "something happend!!!" 

¿Cómo puedo hacer esto?

+0

¿Por qué quieres hacer esto, es mucho mejor tener un archivo de registro y analizarlo para encontrar eventos. –

+0

No sé, supongo que es un buen punto, pero como tengo estas tareas de rake que se ejecutan a través de cron y como si quisiera simplemente iniciar sesión cuando ocurrieron, así puedo volver atrás y observar cuándo tuvieron lugar y el estado de las tareas que se ejecutaron. ¿Cuál sería una buena manera de abordar esto? –

+0

¿No envía el cron la salida del cronjob a la raíz? De todos modos, esta parece una buena forma de lidiar con la situación en cuestión. Los crones son difíciles de diagnosticar y administrar cuando estás acostumbrado a lidiar con webapps. Tal vez pregunte en serverfault? –

Respuesta

14

se puede hacer eso con este código

logfile = File.open('/path/to/log.log', 'a') 
StatusLogger = Logger.new(logfile) 
StatusLogger.info 'Hello World!' 

Y lo más probable es configurar esto en un fichero de inicialización, o podría hacerlo en un archivo de entorno si querías.

+0

Hola Devin, gracias, cuando intento esto, parece funcionar, pero no hay nada en el archivo de registro, ¿pensamientos? –

+0

Hmmmm .... intente agregar logfile.sync = true para que el archivo se vacíe. –

+0

Gracias por compartir. –

13

¿Quieres decir, como tener en application.rb:

StatusLogger = ActiveSupport::BufferedLogger.new(Rails.root.join('log/status.log')) 
+0

Este blob de código en un inicializador llamado config/initializer/log.rb # por ejemplo – pjammer

+0

Nota: Puede colocarlo en cualquier lugar de la aplicación, no solo en 'application.rb', siempre que recuerde asignarlo a una variable (en lugar de una constante como se muestra aquí) –