假设我有以下 API 及其各自的路线,如下 -
1)/api/v1/teachers - 用于教师的CRUD操作
2)/api/v1/students - 用于学生的CRUD操作
目前,我将两个 API 请求的日志存储在组合的.log 文件中。我想将教师的CRUD操作日志存储在teacher.log文件中,将学生的CRUD操作日志存储在students.log文件中。
我提到了以下问题,其中作者希望根据特定环境存储特定日志。
Winston/Node.js how add a Transport only for certain environment?
const winston = require('winston');
const transports = [
new winston.transports.Console({
level : 'info',
colorize : true
}),
new winston.transports.File({
level : 'info',
filename : './logs/logs.log'
})
];
if (process.env.NODE_ENV === 'production') {
const Mail = require('winston-mail').Mail;
transports.push(new Mail({
to : 'xxxxxx@xxxxxx.xx',
from : 'winston@xxxxx.xx',
subject : 'Errors occurred',
level : 'error',
host : 'smtp.xxxxx.xx',
username : 'xxxx@xxxx.xx',
password : 'xxxxx',
port : 1234
}));
}
const logger = new winston.Logger({
transports
});
但是由于我无法访问winston.js中的请求对象本身,因此我无法应用基于条件的路由来将不同路由的日志存储在不同的文件中。
最佳答案
您可以创建 2 个传输并使用 express-winston在路由器之前选择指定的传输。
var router = require('./teachers-router');
app.use(expressWinston.logger({
transports: [
new winston.transports.teachers, // you will need to create this one by your own
],
}));
app.use(router);
关于node.js - Winston/Node.js 如何仅为特定路线添加运输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57727561/