Это то, что мой Winston регистратор выглядит следующим образом:Winston регистратор не сберегательные журналы правильно - две директории создается
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
» каталогов, поэтому Im немного запутался. Любая помощь будет оценена по достоинству.
Winston сам не создает каталог журналов? Как я могу это исправить? – deeveeABC
Я боюсь, что это не сработает, поскольку winston не создает папку под названием «logs» – deeveeABC
Winston не создает каталог, он будет искать папку журналов по пути, на котором запущен основной файл вашего сервера. Если он найдет папку «logs» на этом пути, то он создаст файл «-system.log» в этом каталоге или не будет работать. Поэтому сначала проверьте поток Winston и реализуйте его. –