@indexzero -
¿Qué le parecería agregar un parámetro de API opcional al transporte de archivos para que pueda dividir los archivos de registro por fecha? La idea sería que cada nuevo día, se crearía un nuevo archivo de registro y Winston manejaría automáticamente todo esto / sabría en qué archivo de registro escribir en función de la fecha.
Aceptaría la solicitud de parche para esto
¡Frio! ¿Alguna sugerencia para una API? Estaba pensando en algo como:
// Specify path option and default to spanning by day ( 24 hours in each file )
new (winston.transports.File)({ path: './logs' })
pero puede ser útil permitir un filtro de fecha / hora personalizado.
No es necesario complicar el código winston cuando existe una herramienta estándar para esta tarea: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)
@indexzero ¿
no es tarea de demonios individuales cada rotación de registro de implementación. por eso tenemos herramientas como logrotate, como dijo @cemuzunlar .
@cemuzunlar @Dieterbe
Estoy de acuerdo, idealmente, este no sería un problema de Winston, pero
Veo...
pensar en voz alta: mover la lógica de rotación de registros a un programa de nodo separado, por lo que es un clon simple de logrotate reutilizable que funciona en todas las plataformas.
++ 1
Si bien también soy un defensor de logrotate, no hace su trabajo solo. Logrotate es muy útil porque proporciona un método para decirle a los programas que es hora de vaciar y cerrar sus registros.
El transporte de archivos tiene una función _createStream.checkFile.createAndFlush que a primera vista parece que debería hacer las cosas apropiadas. Para usar esto para logrotate, haga que su programa de nodo capture SIGHUP y acceda a esta función. No tengo tiempo antes de mi trabajo diurno para publicar el código, pero intentaré esta noche y publicaré mis resultados.
Responder a SIGHUP de esta manera debería ser transportable a Windows, y luego cualquier rotación de registro que use en Windows (biblioteca de nodos u otra magia) se deja como ejercicio para el lector.
En caso de que alguien más esté buscando esto:
Gracias por el consejo, @pccowboy. También soy un gran defensor de logrotate. Soy reacio a usar una configuración para el servicio node.js (es decir, winston File maxsize, etc.) y otra (logrotate) para otros servicios (nginx, redis, etc.) y preferiría usar logrotate para todos mis archivos de registro. He creado una función simple que escuchará las señales de HUP y volverá a abrir el archivo de registro después de girar.
Si tengo la oportunidad, intentaré reescribir esto de una manera más limpia (es decir, como una opción de configuración para el transporte de archivos) y crearé una solicitud de extracción.
Corregido por # 205.
¡increíble!
Comentario más útil
No es necesario complicar el código winston cuando existe una herramienta estándar para esta tarea: Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)