2012-05-29 16 views
7

Estoy ejecutando un par de sitios de Rails 3.0 en un servidor Debian. Actualmente todos los registros entran en RAILS_ROOT/log/production.log (RAILS_ROOT para cada sitio)Uso de rsyslogd en Rails 3.0

quisiera cambiar esto, para que todo el registro pasa por rsyslog y se coloca en:

/var/log/rails/site1.log 
/var/log/rails/site2.log 
etc. 

Y también tener estos registros rotados automáticamente todos los días.

¿Cómo se hace esto?

/Carsten

Respuesta

14

En el pasado he utilizado la gema syslog-logger para este

Puede configurar esto en un inicializador:

config.logger = Logger::Syslog.new("site1", Syslog::LOG_LOCAL5) 

En las últimas versiones de rubí, también hay syslog/logger en la biblioteca estándar - el uso es prácticamente el mismo.

Para iniciar el registro en syslog en lugar del archivo de texto predeterminado. Lo que sucede a continuación es una cosa configuración de syslog - es necesario crear reglas rsyslog que definen dónde están sus datos va

Lo más sencillo posible sería algo así como

!site1 /var/log/site1.log 

que dirige todo con el nombre del programa "sitio1" (el primer argumento para Logger :: Syslog).

Hay mucho más que puede hacer, por ejemplo, puede reenviar mensajes de registro a un servidor de registro central que los agrega a todos en un archivo para que no tenga un archivo de registro para cada instancia de la aplicación .

Para la rotación de registros utilizo logrotate - Creo que rsyslog puede manejar ese tipo de cosas internamente pero no conozco los detalles.

+0

Lamento no haber comentado todavía sobre esto, no había visto, que había una respuesta. Voy a probar esto la próxima semana, ¡gracias! –

+0

Syslog :: LOG_LOCAL5 - ¿No hay un error aquí? –

+0

Solo falta un cierre). Aparte de eso vino directamente desde el archivo de configuración de una aplicación de producción. –

Cuestiones relacionadas