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");
Si el subdirectorio /logs
no existe, arrojará una excepción como can't open file logs/log_file.log20150213XXX
,
Creo que winston debería crear automáticamente el subdirectorio en lugar de pedir a los usuarios que lo creen manualmente.
Creo que debería ser responsabilidad del desarrollador asegurarse de que su entorno se aprovisione correctamente.
también, relacionado con pr # 581 y problema # 511
Voto por una opción para esto. Por defecto, el directorio de registro no debería crearse, pero con una opción como createDirectory
establecida en verdadero, sería muy conveniente que Winston creara dicho directorio.
+1
De acuerdo con @ambbell aquí. Depende del consumidor de winston
asegurarse de que exista su directorio de registros.
+1
Otras herramientas de registro como NLog para .NET y SLF4J para Java pueden crear la carpeta sobre la marcha. Además, ¿por qué falla Winston si no puede escribir el registro? ¿Por qué una aplicación completa debería fallar solo porque no se puede iniciar sesión?
@indexzero ¿ @PierLucGagnon ? ¿Aproximadamente la opción createDirectory
? Encuentro el comportamiento actual muy inconveniente y (como lo menciona @ guillegr123) inconsistente con el funcionamiento de otros marcos de registro, por lo que contradice las expectativas del usuario.
Quiero decir, ¿por qué no da un paso más allá y dice que es responsabilidad de los desarrolladores asegurarse de que se cree un ARCHIVO de registro de antemano?
Dado que las carpetas llamadas / logs se ignorarán si usa uno de los gitignores comunes, la excepción de carpeta que falta es un problema común cuando implemento mis aplicaciones en nuevos entornos. Espero que se acepte la solicitud de extracción.
@indexzero ¿Pero por qué? Cuando dices algo como "Yo creo", necesitas proporcionar un razonamiento para esto, ¿no? Mi razón para tener esta opción es porque normalmente el directorio de registros no está bajo el control de versiones y no se creará al clonar un repositorio; tienes un error al intentar ejecutarlo. Ni siquiera estoy hablando de entornos implementados automáticamente.
Solución alternativa: agregue esta instrucción antes de la declaración de transportes:
fs.mkdir('./logs', (err) => { /* no-op */ })
Comentario más útil
Voto por una opción para esto. Por defecto, el directorio de registro no debería crearse, pero con una opción como
createDirectory
establecida en verdadero, sería muy conveniente que Winston creara dicho directorio.