var transports = [];
transports.push(new winston.transports.DailyRotateFile({
name: 'file',
datePattern: '.yyyy-MM-ddTHH',
filename: path.join(__dirname, "logs", "log_file.log")
}));
var logger = new winston.Logger({transports: transports});
logger.info("current scheduled_mt_task count");
Если подкаталог /logs
не существует, он выдаст исключение, например can't open file logs/log_file.log20150213XXX
,
Я думаю, Winston должен автоматически создавать подкаталог, а не просить пользователей создать его вручную.
Я думаю, что разработчик должен убедиться, что его среда должным образом подготовлена.
также по пр 581 и выпуску 511
Я голосую за такой вариант. По умолчанию каталог журналов не должен создаваться, но если для параметра типа createDirectory
задано значение true, было бы очень удобно, если бы Уинстон создал указанный каталог.
+1
Согласитесь с @ambbell здесь. Потребитель winston
должен убедиться, что его каталог журналов существует.
+1
Другие инструменты ведения журнала, такие как NLog для .NET и SLF4J для Java, могут создавать папки на лету. Кроме того, почему Winston терпит неудачу, если он не может вести журнал? Почему все приложение должно выходить из строя только из-за того, что оно не может регистрироваться?
@indexzero Ребята, примете ли вы пиар за предложение @PierLucGagnon ? О варианте createDirectory
? Я нахожу текущее поведение очень неудобным и (как упоминалось @ guillegr123) несовместимым с тем, как работают другие фреймворки, поэтому оно противоречит ожиданиям пользователей.
Я имею в виду, почему бы вам не сделать еще один шаг и не сказать, что его разработчики обязаны заранее создать ФАЙЛ журналирования?
Поскольку папки с именем / logs будут игнорироваться, если вы используете один из распространенных gitignores, исключение отсутствующей папки является распространенной проблемой, когда я развертываю свои приложения в новых средах. Надеюсь запрос на перенос будет принят
@indexzero Но почему? Когда вы говорите что-то вроде «Я думаю», вам нужно обосновать это, не так ли? Моя причина иметь эту опцию заключается в том, что обычно каталог журналов не находится под контролем версий и не будет создан при клонировании репо - бум, у вас возникает ошибка при попытке его запустить. Я даже не говорю об автоматически развертываемых средах.
Обходной путь: добавьте эту инструкцию перед объявлением транспорта:
fs.mkdir('./logs', (err) => { /* no-op */ })
Самый полезный комментарий
Я голосую за такой вариант. По умолчанию каталог журналов не должен создаваться, но если для параметра типа
createDirectory
задано значение true, было бы очень удобно, если бы Уинстон создал указанный каталог.