へのすべてのリクエストをログに記録したいMongoDB
。各ドキュメントには、HTTP メソッド、リクエストを行った人物、更新/挿入/取得されたドキュメントの _id、およびリクエストが行われた時刻が含まれている必要があります。誰か助けてくれませんか?
質問する
3234 次
1 に答える
7
パッケージexpress-winstonの使用をお勧めします。ドキュメントについては、リンクを参照してください。パッケージをインストールした後、npm i express-winston で、ミドルウェア名 logger.js (または任意の名前) を作成します。以下のコードを下にコピーします
const expressWinston = require('express-winston');
const requestLog = expressWinston.logger({
transports: [
new winston.transports.Console({
format: winston.format.json({
space: 2
})
}),
new winston.transports.MongoDB({
db: 'localhost:27001', //Your Db connection
options: {
useNewUrlParser: true,
poolSize: 2,
autoReconnect: true
}
})
],
meta: true,
msg: "Request: HTTP {{req.method}} {{req.url}}; Username: {{req.user.preferred_username}}; ipAddress {{req.connection.remoteAddress}}",
requestWhitelist: [
"url",
"method",
"httpVersion",
"originalUrl",
"query",
"body"
]
});
exports.requestLog = requestLog;
app.js ファイルでは、グローバルに適用されるようにロガー ファイルが必要です。
const logger = require('../middleware/logger');
const express = require('express');
const app = express();
app.use(logger.requestLog);
次のような追加オプションを含めることができます: expressWinston.responseWhitelist.push('body')
オブジェクトでレスポンスボディを提供します。
すべてのリクエストを表示したくない場合は、コンソールのトランスポートを削除できます。毎回データベースにアクセスせずにオブジェクトを表示できるように、追加しただけです。
于 2019-02-19T14:04:36.523 に答える