2016-09-23 3 views
0

Это то, что мой 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 немного запутался. Любая помощь будет оценена по достоинству.

ответ

-1

Это связано с тем, что при создании каталога с использованием модуля «fs» он создает новый каталог на том же уровне, на котором находится ваш файл. Но используя Winston, он создал каталог (имя файла: «logs/-system.log») на уровне проекта. Вот почему созданы два каталога.

+0

Winston сам не создает каталог журналов? Как я могу это исправить? – deeveeABC

+0

Я боюсь, что это не сработает, поскольку winston не создает папку под названием «logs» – deeveeABC

+0

Winston не создает каталог, он будет искать папку журналов по пути, на котором запущен основной файл вашего сервера. Если он найдет папку «logs» на этом пути, то он создаст файл «-system.log» в этом каталоге или не будет работать. Поэтому сначала проверьте поток Winston и реализуйте его. –

 Смежные вопросы

  • Нет связанных вопросов^_^