Winston: Ajout de la possibilité pour le transport de fichiers de diviser les journaux par date

Créé le 29 mai 2011  ·  12Commentaires  ·  Source: winstonjs/winston

@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.

feature request

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)

Tous les 12 commentaires

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

  • winston fonctionne sous Windows, qui n'a pas logrotate, malgré plusieurs tentatives simples (faibles apparences) sur divers blogs (et quelques suggestions pour utiliser cygwin + un logrotate auto-compilé, mais je doute que cela soit même possible pour des raisons théoriques, en supposant que winston garde le fichier ouvert pour l'écriture, ce qui restreint considérablement ce que vous pouvez faire avec ce fichier sous Windows)
  • le transport de fichiers de winston effectue déjà la rotation des journaux, mais il se divise par taille de fichier, pas par date. Et il supprime également les anciens fichiers, il s'agit donc de toutes les fonctionnalités de base de rotation des journaux

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.

https://gist.github.com/suprememoocow/5133080

Corrigé par #205.

impressionnant!

Cette page vous a été utile?
0 / 5 - 0 notes