Файлы журнала не создаются с помощью библиотеки winston node js
Я работаю в узле JS и использую библиотеку Winston для регистрации. Следующий код не создает файл журнала.
var winston = require('winston');
var logger = winston.createLogger({
transports: [
new winston.transports.File({
level: 'info',
filename: './logs/all-logs.log',
handleExceptions: true,
json: true,
maxsize: 5242880, //5MB
maxFiles: 5,
colorize: false
}),
new winston.transports.Console({
level: 'debug',
handleExceptions: true,
json: false,
colorize: true
})
],
exitOnError: false
});
module.exports = logger;
module.exports.stream = {
write: function(message, encoding){
logger.info(message);
}
};
logger.info ("Привет, мир");
Он нормально регистрируется в терминале:
{"message":"hello world","level":"info"}
Структура каталогов такая
-test.js
-winston.js
-log
1 ответ
Решение
Вот вам следует использовать Winston:
Ниже код создает файлы журнала в /log/
каталог.
Сначала установите winston-daily-rotate-file, fs и winston, используя:
npm i winston-daily-rotate-file fs winston
Создать файл с именем winston.js
const fs = require("fs");
const winston = require("winston");
const logDir = "log";
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir);
}
const tsFormat = () => (new Date()).toLocaleTimeString();
module.exports = logger = winston.createLogger({
transports: [
new (winston.transports.Console)({
format: winston.format.combine(
winston.format.colorize(),
winston.format.timestamp(),
winston.format.align(),
winston.format.simple(),
),
level: 'info'
}),
new (require("winston-daily-rotate-file"))({
filename: `${logDir}/-results.log`,
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json(),
)
}),
new winston.transports.File({
filename: 'log/error.log',
level: 'error',
format: winston.format.combine(
winston.format.timestamp(),
winston.format.simple(),
)
}),
]
});
Теперь все, что вам нужно сделать, это импортировать регистратор и использовать его. Ниже приведен пример.
Теперь в том же каталоге создайте новый файл test.js и добавьте следующий код:
const logger = require("./winston.js");
logger.info(`Test info Log!`);
logger.error(`Test error Log!`);
Теперь запустите test.js используя
node test.js
Надеюсь, это то, что вы ищете.