Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8825

Node.jsでのリクエストIDのログ出力(express, log4js, request-context)

$
0
0

概要

Node.jsのexpressベースのWebアプリで、リクエストIDをログ出力します。
今回、log4js、request-contextを使用しました。

request-contextで、リクエスト毎にリクエストIDを保持します。
log4jsのtokensに、リクエストIDをセットして、patternでリクエストIDを出力するようにしています。

参照情報

参考にさせていただいたページは下記です。

注意点

request-contextは、下記の通り、Node.jsのdeprecatedになっているdomainに依存しています。参照先2でも指摘されており、より詳しく記載されています。
request-context

See the Domain Docs for further information on error handling for domains. Note that the domain module is pending deprecation!

サンプルコード

今回は、リクエスト毎に、uuidでリクエストを発行するようにしています。
contextService.setのところでリクエストIDを保持させています。

app.js
constexpress=require('express');constapp=express();constcontextService=require('request-context');constuuid=require('uuid/v4');constlogger=require("./logger").logger();app.use(contextService.middleware('request'));app.use((req,res,next)=>{constrequestId=uuid();contextService.set('request:requestId',requestId);logger.info("Start API.",req.method,req.originalUrl);next();});app.get('/',function(req,res){res.send('hello world');logger.info("End API.");})app.listen(3000)

getRequestIdで、保持しているリクエストIDを取得しています。
layoutのpatternの%x{requestId}がリクエストIDです。

logger.js
constlog4js=require("log4js");constcontextService=require('request-context');constgetRequestId=function(){returncontextService.get('request:requestId');};log4js.configure({appenders:{console:{type:'console',layout:{type:'pattern',pattern:'[%d] [%x{requestId}] %[[%p]%] [%c] %m',tokens:{requestId:getRequestId}}}},categories:{default:{appenders:['console'],level:'info'}}});exports.logger=function(){constlogger=log4js.getLogger('default');returnlogger;};

ログ出力結果

下記のようにリクエスト毎に、リクエストIDが出力されます。

[2019-11-26T11:24:46.451] [ef9b0c23-53f2-4c7b-bce3-0def665fbc08] [INFO] [default] Start API. GET /
[2019-11-26T11:24:46.460] [ef9b0c23-53f2-4c7b-bce3-0def665fbc08] [INFO] [default] End API.
[2019-11-26T11:24:49.588] [4af4ffed-a22f-4b81-806a-1cdcff4b7c22] [INFO] [default] Start API. GET /
[2019-11-26T11:24:49.590] [4af4ffed-a22f-4b81-806a-1cdcff4b7c22] [INFO] [default] End API.
[2019-11-26T11:24:51.226] [360033c9-e6eb-405c-b3a7-6ac9e20b3fa4] [INFO] [default] Start API. GET /
[2019-11-26T11:24:51.227] [360033c9-e6eb-405c-b3a7-6ac9e20b3fa4] [INFO] [default] End API.
[2019-11-26T11:24:53.371] [048a8ce6-1bd8-4514-89df-aa467419e0ce] [INFO] [default] Start API. GET /
[2019-11-26T11:24:53.372] [048a8ce6-1bd8-4514-89df-aa467419e0ce] [INFO] [default] End API.

Viewing all articles
Browse latest Browse all 8825

Trending Articles