@indexzero -
Que penseriez-vous de l'ajout d'un paramètre d'API facultatif au transport de fichiers afin qu'il puisse diviser les fichiers journaux par date ? L'idée serait que chaque nouveau jour, un nouveau fichier journal serait créé et Winston gérerait automatiquement tout cela / sache dans quel fichier journal écrire en fonction de la date.
Accepterait la demande de correctif pour cela
Frais! Des suggestions pour une API ? Je pensais à quelque chose comme :
// Specify path option and default to spanning by day ( 24 hours in each file )
new (winston.transports.File)({ path: './logs' })
mais il pourrait être utile de permettre un filtre date/heure personnalisé.
Il n'est pas nécessaire de compliquer le code winston lorsqu'il existe un outil standard pour cette tâche : Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)
@indexzero Le correctif pour cela est-il toujours acceptable ? Je sais que cela peut être implémenté via l'option de nom de fichier, mais je peux ajouter une autre option pour cela.
ce n'est pas la tâche des démons individuels à chaque rotation des journaux d'implémentation. c'est pourquoi nous avons des outils comme logrotate, comme l' a dit
@cemuzunlar @Dieterbe
Je suis d'accord, idéalement, ce ne serait pas le problème de Winston, mais
Je vois...
penser à voix haute : déplacer la logique de rotation des journaux dans un programme de nœud séparé, il s'agit donc d'un simple clone de logrotate réutilisable qui fonctionne sur toutes les plates-formes.
++1
Bien que je sois également un partisan du logrotate, il ne fait pas son travail seul. Logrotate est donc très utilisable car il fournit une méthode pour dire aux programmes qu'il est temps de vider et de fermer leurs journaux.
Le transport de fichiers a une fonction _createStream.checkFile.createAndFlush qui, à première vue, semble devoir faire les choses appropriées. Pour l'utiliser pour logrotate, demandez à votre programme de nœud d'intercepter SIGHUP et accédez à cette fonction. Je n'ai pas le temps avant ma journée de poster du code, mais je vais essayer ce soir et poster mes résultats.
Répondre à SIGHUP de cette manière devrait être transportable vers Windows, puis toute rotation de journal que vous utilisez sur Windows (bibliothèque de nœuds ou autre magie) est laissée en exercice au lecteur.
Au cas où quelqu'un d'autre recherche ceci :
Merci pour le conseil, @pccowboy. Je suis aussi un grand défenseur de logrotate. Je suis réticent à utiliser une configuration pour le service node.js (c'est-à-dire winston File maxsize, etc.) et une autre (logrotate) pour d'autres services (nginx, redis, etc.) et je préférerais utiliser logrotate pour tous mes fichiers journaux. J'ai mis en place une fonction simple qui écoutera les signaux HUP et rouvrira le fichier journal après la rotation.
Si j'en ai l'occasion, j'essaierai de réécrire cela de manière plus propre (c'est-à-dire en tant qu'option de configuration pour le transport de fichiers) et créerai une pull request.
Corrigé par #205.
impressionnant!
Commentaire le plus utile
Il n'est pas nécessaire de compliquer le code winston lorsqu'il existe un outil standard pour cette tâche : Logrotate (http://linuxcommand.org/man_pages/logrotate8.html)