Где находится файл журнала в приложении nodejs с winston
Я не могу найти в своем каталоге приложения файл 'test.log'?
код ниже находится в 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 ответа
Интересный вопрос. Глядя на исходный код для передачи файлов, выясняется, что каталог, если он не указан, является производным от самого параметра имени файла. Похоже, что вы используете абсолютный или относительный путь с явно указанным каталогом.
Эта линия, где она вычисляет абсолютный путь.
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
Я написал тестовый файл так:
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