tutorial software rails official español ejemplos descargar caracteristicas ruby-on-rails logging production-environment

software - Rotación de registros de producción de Ruby on Rails



ruby on rails tutorial español (5)

¿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 de la aplicación?


Opción 1: syslog + logrotate

Puede configurar los rieles para usar las herramientas de registro de sistemas.

Un ejemplo en config / environments / production.rb .

# Use a different logger for distributed setups config.logger = SyslogLogger.new

De esta forma, puede iniciar sesión en syslog y puede usar las herramientas predeterminadas de logrotate para rotar los registros.

Opción 2: Registros normales de Rails + logrotate

Otra opción es simplemente configurar logrotate para recoger los registros dejados por los rieles. En Ubuntu y Debian eso sería, por ejemplo, en un archivo llamado /etc/logrotate.d/rails_example_com .

/path/to/rails.example.com/tmp/log/*.log { weekly missingok rotate 52 compress delaycompress notifempty copytruncate }

Según las sugerencias a continuación, en Rails se recomienda utilizar 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 los comentarios. Y eliminado create 640 root adm como por sugerencia sugerida.


Habilite el envío de registros a Loggly usando Rails Logglier como se muestra en mi archivo environments / production.rb. la versión de los rieles es 4.1.0

RailsApplication::Application.configure do require ''logglier'' config.logger = Logglier.new(<https://logs-01.loggly.com/inputs/inputkey>) log.info("hello from logglier") end


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óquela en su archivo de entorno (''development.rb'' / ''production.rb'').

config.logger = ActiveSupport::Logger.new(config.paths[''log''].first, 1, 50 * 1024 * 1024)

Con esto, tus archivos de registro nunca crecerán más de 50Mb. Puede cambiar el tamaño según su preferencia. El ''1'' en el segundo parámetro significa que se mantendrá un archivo de registro histórico, por lo que tendrá hasta 100Mb de registros: el registro actual y el fragmento anterior de 50Mb.

Fuente a esta solución .


Para cada registro: registro de Rails, registro de Rpush, ... Puede usarlo así en su archivo de servicio de configuración:

config.log_file = ''log/rpush.log'' config.logger = ActiveSupport::Logger.new(config.log_file, 1, 20*1024*1024)

Significa: solo guarde 1 archivo de registro previo después de la división. El tamaño de registro principal nunca supera los 20 MB.


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/.

# Rotate Rails application logs based on file size # Rotate log if file greater than 20 MB /path/to/your/rails/applicaton/log/*.log { size=20M missingok rotate 52 compress delaycompress notifempty copytruncate }

O

# Rotate Rails application logs weekly /path/to/your/rails/applicaton/log/*.log { weekly missingok rotate 52 compress delaycompress notifempty copytruncate }

Tenga en cuenta que copytruncate hace 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 anterior. Recomiendo encarecidamente que utilice copytruncate a menos que sepa que necesita crear. La razón por la cual Rails aún puede seguir señalando el archivo de registro anterior, aunque su nombre ha cambiado y es posible que deba reiniciar para localizar el nuevo archivo de registro. copytruncate lo evita manteniendo el mismo archivo que el archivo activo.