[解決済み] expressjsのログ取得のベストプラクティスは?
2022-03-03 22:35:29
質問
私はexpressjsに基づいてアプリケーションを構築しており、その中のすべてのイベントをログに記録したいと思います。私はwinstonを見つけることができ、それはクールであるように思われます。とにかく、私はそれを私のexpressjsアプリに接続する方法を探しています。
私が欲しいのは、アプリケーション内のロギングです。私のリクエストはそれほど単純ではないので、私のアプリの内部ですべてをログに記録したいと思います(リクエストだけでなく)。
私の現在の状況
server.js (このレベルでhttpリクエストのログを取りたい)
var express = require('express');
var app = express();
var fs = require('fs');
// Post parser
app.configure(function(){
app.use(express.bodyParser());
});
// Load routes
require('fs').readdirSync(__dirname + '/routes').forEach(function(file) {
require(__dirname + '/routes/' + file)(app);
});
// 404: Not found
app.use(function(req, res, next){
res.json(404, {ERROR: 'Page not found.'});
});
// 500: Error reporing
app.use(function(err, req, res, next){
console.error(err.stack);
res.json(500, {ERROR: 'Internal server error.'} );
});
// Startup new server
app.listen(900);
routes/something.js
var something = require(__dirname + '/../controller/something.js');
module.exports = function(app) {
app.get('/v1/something', function(req, res, next) { new something().getAll(req, res, next); });
};
controller/something.js (デバッグログも同じロガーを使いたいので)
/**
* Constructor
*
*/
function Something() {
};
/**
* Get all the data
*
*/
Something.prototype.getAll = function(req, res, next) {
// I want to log some very important information here
res.json({result: true, data: ['hello', 'hi', 'ciao', 'buf']});
}
module.exports = Something;
もうひとつ考えているのは、コントローラから呼び出される関数(モデルや他のライブラリなど)のイベントをすべてログに記録することです。
そこで、ロガーライブラリを作成し、それを使用して呼び出すのが良い方法だと思います。
var logger = require(__dirname + '/../libraries/logger.js');
ロガーの定義が含まれています。もう一つの問題は、データのプレフィックスをどうするかということです。私は多くの同時リクエストを持ち、それぞれのリクエストによって呼び出されたデバッグメッセージを確認したいのです。
解決方法は?
私たちは ウィンストン これはおそらく最も堅牢なロギング・パッケージでしょう。
結局、あなたが提案したとおりにセットアップすることになりました。ロガーオブジェクトを私たちの定義とトランスポートにラップするために使用される共通のライブラリを作成し、その後、別の方法で処理させたい他のタイプのオブジェクトを処理します。
関連
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] Express.js req.bodyが未定義です。
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Node.jsの例外処理のベストプラクティス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
[解決済み】MongoClient v3.0使用時、db.collectionは関数ではない
-
[解決済み】ブロックスコープの宣言は、ストリクトモード以外ではまだサポートされていません。
-
[解決済み】MongooseでEnumを作成し使用する方法
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] エラーです。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりません。
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?