我的自定义传输

时间:2018-04-28 07:57:26

标签: electron winston

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之前,自定义传输工作正常,但我需要能够保存来自多个文件的日志消息。

1 个答案:

答案 0 :(得分:0)

问题得到解决。我认为它与Electron相关的代码干扰有关,但我不确定我改变了什么来解决这个问题。以下是Chris Alderson在GitHub上的一些建议(供未来观众使用)。