2012-03-06 12 views
8

Para Rails 3.1 (será 3.2 muy pronto), tengo registros excepcionalmente prolijos que tienen mucha información adicional del trabajador arrojándome en ellos.Rotación de registros en el modo DESARROLLO de Rieles?

Normalmente termino con archivos de varios archivos development.log. He visto varios rumores acerca de la rotación de registros de producción, sin embargo, no he encontrado nada que parezca aplicable a la rotación development.log.

¿Cómo rotar su development.log en cada 100.megabytes o menos? O LO QUE PREFERIRÍA es truncar realmente el encabezado del archivo para que solo los elementos más recientes permanezcan en el registro, hasta 100MB de las entradas más recientes.

He jugado con esto un poco y estoy pensando más y más que nada como esto existe en la actualidad y que tal vez debería implementar algo que usará el ruby ​​File.truncate de alguna manera, sin embargo no estoy seguro de la eficacia de esto todavía en el final del archivo hasta el momento.

+0

¿En qué servidor estás? – Roger

+0

ejecutándose en Mac OS X para 'desarrollo'. Algunos están en Linux en el grupo. Si puedo usar un método no específico que sería mejor, o puedo hacer algo con 'case CONFIG ['host_os']' si es necesario. – ylluminate

+1

http://stackoverflow.com/questions/1036821/how-to-delete-rails-log-file-after-certain-size – Kuba

Respuesta

10

En realidad se puede decir a la clase de Ruby Logger para rotar los archivos en el constructor:

http://corelib.rubyonrails.org/classes/Logger.html#M000163

Ejemplo:

Logger.new(name, shift_age = 7, shift_size = 1048576) 

En una de mis archivos enrivornment tengo la siguiente línea:

config.logger = Logger.new("#{RAILS_ROOT}/log/#{ENV['RAILS_ENV']}.log", 10, 1048576) 

Esto mantiene los últimos 10 archivos de registro que se giran cada 1 MB.

+2

Esto funciona bien, sin embargo en 3.2 la clase Logger está en desuso en favor de ActiveSupport :: BufferedLogger, que aparentemente no admite la rotación. ¡Frustrante! –

+0

@CaffeineComa puede apoyar su inferencia? Estoy usando Rails 3.2.2 y esto funciona bastante bien, al menos en el modo de desarrollo, ese es el alcance de esta pregunta. –

1

en OSX, lo usaría newsyslog

/etc/newsyslog.conf

En un sistema operativo Linux: logrotate

logrotate

+0

¿Alguna idea sobre el uso 'tail -c $ [100 * 1024 * 1024] development.log'? – ylluminate

+0

bueno, no es así, es bastante masivo. Normalmente (para depurar/devlopment) borro mi consola (cmd-k) y luego ejecuto mi código para ver qué sucedió. Viendo un rastro de 100 MB, no gracias :) Y depende también si otras personas se ejecutan en su entorno de desarrollo. Desde entonces, necesitas dividir el desorden de las diferentes IP. – Roger

+0

Jajaja, sí, eso todavía es un poco grande. Una vez que no tengamos tan locas descargas de mangueras de incendios para algunos datos, lo reduciré a algo más parecido a 10 MB probablemente. – ylluminate

Cuestiones relacionadas