¿Cuál es la mejor manera de habilitar la rotación de registros en una aplicación de producción de Ruby on Rails?
¿Es mediante el uso de logrotate en el servidor de alojamiento o hay un conjunto de opciones para usar al inicializar el registrador desde la aplicación?
ruby-on-rails
logging
production-environment
cnicolaou
fuente
fuente

Respuestas:
Opción 1: syslog + logrotate
Puede configurar rieles para usar las herramientas de registro de sistemas.
Un ejemplo en config / assets / production.rb .
De esa manera, inicia sesión en syslog y puede usar las herramientas predeterminadas de rotación de registros para rotar los registros.
Opción 2: registros de Rails normales + logrotate
Otra opción es simplemente configurar logrotate para recoger los registros que dejan los rieles. En Ubuntu y Debian eso sería, por ejemplo, en un archivo llamado
/etc/logrotate.d/rails_example_com.Según las sugerencias a continuación, en Rails se recomienda usar
copytruncate, para evitar tener que reiniciar la aplicación Rails.Editar: eliminó "sharedscripts / endscript" ya que no se usan aquí y causan problemas según el comentario. Y eliminado
create 640 root admsegún el comentario sugerido.fuente
logrotatesolución, vale la respuesta de @ amit-saxena: sugiere el uso decopytruncatemás decreatedirectiva.copytruncate,createno tiene ningún efecto, por lo que probablemente debería eliminarlo de su ejemplosu your_rails_user your_rails_groupcon el propietario y el grupo de sus archivos de registro (es decir, los del proceso Rails / Passenger) o (versiones recientes de?) Logrotate puede quejarse de los permisos.Si está utilizando logrotate, puede elegir cualquiera de las opciones que se muestran a continuación colocando un archivo conf en el directorio /etc/logrotate.d/.
O
Tenga en cuenta que copytruncate realiza una copia de seguridad del registro actual y luego borra el archivo de registro para continuar escribiendo. La alternativa es usar create, que realizará la rotación al renombrar el archivo actual y luego crear un nuevo archivo de registro con el mismo nombre que el archivo anterior.Le recomiendo que use copytruncate a menos que sepa que necesita crear. La razón es que Rails puede seguir apuntando al archivo de registro anterior a pesar de que su nombre ha cambiado y pueden requerir reiniciar para ubicar el nuevo archivo de registro. copytruncate evita esto manteniendo el mismo archivo que el archivo activo.
fuente
logrotate --force $CONFIG_FILEespecificando la ubicación del archivo de configuración para ejecutarlo manualmente.Para Rails 5, esto es lo que tuve que hacer para limitar el tamaño del registro y no cambiar la salida del servidor en la consola:
De acuerdo con la documentación , si desea limitar el tamaño de la carpeta de registro, colóquelo en su archivo de entorno ('development.rb' / 'production.rb').
Con esto, sus archivos de registro nunca crecerán más de 50Mb. Puede cambiar el tamaño según sus preferencias. El '1' en el segundo parámetro significa que se guardará 1 archivo de registro histórico, por lo que tendrá hasta 100Mb de registros: el registro actual y el fragmento anterior de 50Mb.
Fuente de esta solución .
fuente
config.paths['log'].firstponerRails.root.join('log', "#{Rails.env}.log")config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)50.megabyteses lo mismo50 * 1024 * 1024, pero mucho más fácil de entender. Consulte las extensiones principales de ActiveSupport para obtener más detalles.Rails.application.config.paths['log'].firstdevolver exactamente este archivoPara Rails 5 , si desea la rotación diaria de registros, solo necesita esto:
De acuerdo con la documentación , puede usar
daily,weeklyomonthly.fuente
Para cada registro: registro de Rails, registro de Rpush, ... Puede usarlo así en su archivo de configuración de servicio:
Significa: solo guardar 1 archivo de registro anterior después de dividir. El tamaño del registro principal nunca supera los 20 MB.
fuente
Habilite para enviar registros al loggly utilizando rails logglier como se muestra en mi archivo de entornos / production.rb. la versión de rails es 4.1.0
fuente