Я использую Winston Logger. Мне пришлось использовать https://www.npmjs.com/package/express-winston, потому что я хотел, чтобы объект req
использовал user.id
.
Я хочу создать файл журнала для каждого пользователя. Это B-to-B-приложение, и количество пользователей будет меньше, поэтому я уверен, что количество файлов не взорвется.
Это моя промежуточная реализация winston-
app.use((req, res, next) => {
expressWinston.logger({
// winstonInstance: global.logger,
transports: [
new winston.transports.Console(),
//all logs
new winston.transports.File({
filename: `${logPath}/fapi-logs-${mmyyyy}.log`,
format: winston.format.json(),
}),
//all logs per user
new winston.transports.File({
filename: `${logPath}/fapi-logs-${mmyyyy}-user-${req.session.user.id}.log`,
format: winston.format.json(),
}),
//warnings - no data for keywords
new winston.transports.File({
level: "warn",
filename: `${logPath}/fapi-warn-${mmyyyy}.log`,
format: winston.format.json(),
}),
//warnings - no data for keywords
new winston.transports.File({
level: "debug",
filename: `${logPath}/fapi-debug-${mmyyyy}.log`,
format: winston.format.json(),
}),
//server errors
new winston.transports.File({
level: "error",
filename: `${logPath}/fapi-error-${mmyyyy}.log`,
format: winston.format.json(),
}),
], //this is ignored as winstonInstance is provided
format: winston.format.combine(
winston.format.colorize(),
winston.format.json(),
winston.format.timestamp(),
winston.format.prettyPrint()
),
meta: true, // optional: control whether you want to log the meta data about the request (default to true)
httpinfo:
"HTTP userid-{{req.session}} | statusCode-{{res.statusCode}} | url-{{req.url}} | method-{{req.method}} | responseTime-{{res.responseTime}}ms", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
ignoreRoute: function (req, res) {
return false;
}, // optional: allows to skip some log messages based on request and/or response
});
next();
});
Как мне войти в файлы? Я имею в виду, console.log
не входит в файлы. Файлы создаются, но ничего не записывается в файл.
Я пытался использовать logger.info
также в моих файлах маршрутов и других .js
файлах, он выдал ошибку, говорящую logger is not defined
.
Скажите, пожалуйста, что мне не хватает?