He escrito un programa simple, registro de fechas, para dividir registros comunes en función de la fecha registrada, en lugar de la hora actual del sistema cuando el programa ve la línea de registro. Esto puede o no ser exactamente lo que cronolog u otro divisor de registros ya hace, pero fue más rápido escribir el mío que descubrir qué hacen los demás.
Usando el año y el mes en la solicitud registrada, la línea se escribe en un archivo o tubería que incluye el AAAAMM calculado a partir de los datos registrados. Sí, esto es algo específico para el formato de registro común. El primero [se supone que delimita la fecha. Cuidado con las direcciones IPv6. :)
Para el análisis de registros es importante que cada registro realmente solo contenga las solicitudes para cada mes respectivo, y cada registro idealmente debe estar completo para obtener resultados de análisis correctos. No es suficiente determinar el nombre de archivo en función del tiempo actual dentro del divisor de registro, porque una solicitud lenta que comienza a las 23:59:59 terminará en el archivo de registro para el mes incorrecto.
Utilizo esto con nginx por medio de un fifo nombrado que se verifica que existe antes de que se inicie nginx. Tenga en cuenta que existe una compensación en el programa entre la detección de errores y la salida almacenada, donde el registro de fechas actualmente prefiere la salida almacenada por razones de rendimiento, por lo tanto, asegúrese de que su configuración realmente funcione, especialmente cuando utilice tuberías de shell, para no perder ningún dato de registro .
Código fuente: http://stuge.se/datelog.c
¡No dude en enviarme cualquier comentario y, por supuesto, parches!