2013-12-12 7 views
5

Я не могу найти в моем каталоге приложений, где находится файл test.log?где находится файл журнала в приложении nodejs с winston

ниже код в server.js

var winston = require('winston'), mylogger = new (winston.Logger)({ 
    transports: [ 
    new (winston.transports.Console)(), 
    new (winston.transports.File) ({filename: 'test.log'}) 
    ] 
}); 

mylogger.log('Hello world'); 

мое приложение каталог:

/ 
    app/ 
    config/ 
    public/ 
    server.js 
+2

Возможно текущий рабочий каталог ... – Brad

ответ

0

Интересный вопрос. Рассматривая исходный код для транспорта файлов, оказывается, что каталог, если он не указан, выводится из самого параметра filename. Представляется, что вы либо используете абсолютный путь, либо относительный путь с явно указанным каталогом.

Эта линия, где она определяет абсолютный путь.

var fullname = path.join(self.dirname, target); 

self.dirname является установка здесь:

this.dirname = options.dirname || path.dirname(options.filename); 

поэтому вопрос в том, что если options.filename не включает в себя каталог, что делает path.dirname вернуться?

Я на самом деле не знаю, но есть две возможности я бы подозревать:

  • Текущий рабочий каталог процесса
  • корневой файловой системы, потому что если path.dirname берет то, что осталось от последний /, то undefined и undefined + '/test.log' является '/test.log'

есть два шага вы можете взять с собой:

  • Проверьте текущий каталог и корень файловой системы, чтобы узнать, что это такое. (Другими словами, проверить теории)
  • Укажите каталог явно (вероятно, хорошая идея, так или иначе)

https://github.com/flatiron/winston/blob/master/lib/winston/transports/file.js

+0

Я использую команду поиска в окне, нет никакого результата. Я использую {filename: '/test.log}, я все еще не отображается в каталоге с файлом server.js – user3044147

+0

имя_файла: __dirname +' /debug.log '} этот способ все еще не работает – user3044147

+0

Вы проверили для любых разрешений? – Brandon

0

Я написал тестовый файл, как это:

var winston = require('winston'); 
var logger = new (winston.Logger)({ 
    transports: [ 
    new (winston.transports.Console)(), 
    new (winston.transports.File)({ filename: 'somefile.log' }) 
    ] 
}); 

logger.log('info', 'Hello distributed log files!'); 
logger.info('Hello again distributed logs'); 

process.exit(); 

и Я обнаружил, что если я удалю последнюю строку, файл журнала будет создан и зарегистрирован правильно.

Я использовал process.exit(), чтобы разорвать мою программу, поскольку я просто хотел протестировать регистратор, и похоже, что он каким-то образом нарушил процесс в файле журнала.

Проверить этот вопрос: https://github.com/winstonjs/winston/issues/228

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

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