0
这是我的温斯顿记录器是什么样子:温斯顿记录不保存日志正确 - 两个目录创建
var winston = require('winston')
var moment = require('moment')
var fs = require('fs')
var logDir = 'logs'
// Create the log directory if it does not exist
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir)
}
function formatter (options) {
if (options.level === 'error') {
return options.timestamp() + ' *** ' + options.level.toUpperCase() + ' *** ' + (undefined !== options.message ? options.message : '') +
(options.meta && Object.keys(options.meta).length ? ' ' + JSON.stringify(options.meta) : ' ')
} else if (options.level === 'info') {
return options.timestamp() + ' - ' + options.level.toUpperCase() + ' - ' + (undefined !== options.message ? options.message : '') + (options.meta && Object.keys(options.meta).length ? ' ' + JSON.stringify(options.meta) : '')
}
}
var systemLogger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({
timestamp: function() {
return moment().format('D/MM/YYYY HH:mm:ss:SSS')
}
}),
new (require('winston-daily-rotate-file'))({
filename: 'logs/-system.log',
datePattern: 'dd-MM-yyyy',
prepend: true,
json: false,
timestamp: function() {
return moment().format('D/MM/YYYY HH:mm:ss:SSS')
},
formatter: formatter
})
]
})
module.exports = systemLogger
对我来说,它看起来像一切都在上面的代码罚款。但是,有两个错误...不是在项目目录中创建一个名为'logs
'的目录,程序会创建两个名为'logs
'的目录 - 一次在项目目录中,一个在目录之外。任何想法为什么?
所以在我实际的程序,我把这样的记录:
// winston logger
var systemLogger = require('./logging.js')
systemLogger.info(Server Updated', {
'ip': ip
})
无处我指定我想两个“logs
”目录,所以林略有困惑。任何帮助,将不胜感激。
Winston本身不会创建日志目录?我怎样才能解决这个问题? – deeveeABC
我担心这不起作用,因为winston本身并没有创建一个名为'logs'的文件夹 – deeveeABC
Winston不会创建目录,它会搜索服务器主文件运行路径上的日志文件夹。如果它在该路径中找到“logs”文件夹,那么它将在该目录中创建“-system.log”文件或不起作用。所以首先检查一下winston的流程并实现它。 –