module.exports = {
JsonDBTransport: class JsonDBTransport extends Transport {
constructor(options) {
super(options)
if (options.level === "error") {
this.logDBSystem = new Store({name: options.filename})
if (this.logDBSystem.get('log') === undefined)
this.logDBSystem.set('log', [])
}
else {
this.logDBUser = new Store({name: options.filename})
if (this.logDBUser.get('log') === undefined)
this.logDBUser.set('log', [])
}
}
log(info, callback) {
let self = this
setImmediate(function () {
self.emit('logged', info)
})
let logDB
console.log('test')
if (info.level === "error")
logDB = self.logDBSystem
else
logDB = self.logDBUser
if (logDB !== undefined) {
let log = logDB.get('log')
log.push(info)
logDB.set('log', log)
}
if (callback && typeof callback === "function")
callback()
}
}
}
winston.loggers.add('logger', {
format: combine(timestamp(), prettyPrint()),
transports: [
new module.exports.JsonDBTransport({ filename: userLogsPath + path.sep + logFile, level: 'info' }),
new module.exports.JsonDBTransport({ filename: sysLogsPath + path.sep + logFile, level: 'error' })
],
exitOnError: false
})
logger = winston.loggers.get('logger')
logger.info('test log')
Функция журнала в пользовательском транспорте не вызывается, поэтому журналы не сохраняются. Я использую winston 3.0.0-rc5 и Electron-Store для хранения файлов журналов, чтобы создать правильный файл JSON. Пользовательский транспорт работал до того, как я начал использовать winston.loggers, но мне нужно иметь возможность сохранять сообщения журнала из нескольких файлов.