次のAPIとそれぞれのルートがあるとしましょう-
1) /api/v1/teachers - 教師の CRUD 操作用
2) /api/v1/students - 学生の CRUD 操作用
現在、両方の API リクエストのログを combined.log ファイルに保存しています。教師のCRUD操作のログをteachers.logファイルに、生徒のCRUD操作のログをstudents.logファイルに保存したいと考えています。
著者が特定の環境に基づいて特定のログを保存したいという次の質問を参照しました。
Winston/Node.jsは特定の環境にのみトランスポートを追加する方法は?
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 のリクエスト オブジェクト自体にアクセスできないため、ルートに基づいて条件を適用して、異なるルートのログを別のファイルに保存することはできません。