Ich muss die Protokolle täglich außer der Datei für den aktuellen Tag drehen. Ich verwende Winston und winston-daily-rotate-Datei Bibliotheken.Wie rotieren täglich Protokolle mit Winston außer dem ersten Tag
Im folgenden Beispiel wird eine Datei "info.log.2016-08-09" nur beim ersten Ausführen des Knotens generiert.
Aber ich muss wirklich die Datei "info.log" generieren, und nach diesem Tag sollte in "info.log.2016-08-09" umbenannt werden, und erstellen Sie eine neue "info.log" für der aktuelle Tag. Ich verstehe, dass dies das normale Verhalten in anderen Anwendungen ist.
var logger = new (winston.Logger)({
transports: [
new dailyRotateFile(
{
name: 'cronInfo',
filename: path.join(__dirname,"log", "info.log"),
level: 'info',
timestamp: function(){
return utils.formatDate(new Date(), "yyyy-mm-dd'T'HH:MM:ss.l'Z'")
},
formatter: function(options) {
return options.timestamp() +' ['+ options.level.toUpperCase() +'] '+ (undefined !== options.message ? options.message : '') +
(options.meta && Object.keys(options.meta).length ? '\n\t'+ JSON.stringify(options.meta) : '');
},
json:false,
datePattern:".yyyy-MM-dd"
})
]
});
Wenn die Anwendung gestartet wird, können Sie den Timer auf 'time-to-change-log-name' setzen. On Timer: Log-Datei umbenennen, neue 'info.log' durch' Sync'-Funktion erstellen, um 'Winston'-Aufrufe zu vermeiden, nächsten Timer einstellen. Vielleicht muss "Winston" neu gestartet werden, um den Deskriptor/Stream der Logdatei zu aktualisieren (ich bin mir nicht sicher, ob es möglich ist). –
https://github.com/winstonjs/winston-daily-rotate-file/issues/23 – Arjan