rotación de syslog

rotación de syslog

Escribí una pequeña aplicación c que usa la interfaz syslog c para escribir mensajes (de man 3 syslog):

void openlog(const char *ident, int logopt, int facility);
void syslog(int priority, const char *message, ...);
void closelog(void);

Mi pregunta: estoy escribiendo mensajes a LOCAL0 en /var/log/local0.log. También tengo cron llamando a logrotate /var/log/local0.log. Me di cuenta de que después de la rotación, mi aplicación continúa escribiendo en el archivo que se rotó en lugar del nuevo /var/log/local0.log.

¿Cuál es la mejor manera de solucionar este problema con un script de postrotación?

  1. Fácil, pero no ideal: reinicie completamente el demonio rsyslog.

  2. Enviar y manejar SIGHUP en mi aplicación. Ésta parece la solución más adecuada. Pero no estoy seguro de qué debo hacer cuando obtenga el HUP. ¿Solo necesito llamar a closelog() y luego a openlog()?

Respuesta1

Otra solución alternativa decente, que no se adapta del todo a su situación pero que puede usarse "en caso de necesidad", es la opción copiartruncar en logrotate. Significa que no es necesario notificar lo que se esté escribiendo en el archivo de registro.

información relacionada