Интересный вопрос. Рассматривая исходный код для транспорта файлов, оказывается, что каталог, если он не указан, выводится из самого параметра 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
Возможно текущий рабочий каталог ... – Brad