-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
34 lines (28 loc) · 1.34 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
"use strict";
const process = require("process");
const morgan = require("morgan");
module.exports = function _default(app, stream, name, config = {}) {
morgan.token("serverId", () => {
const ec2Instance = app.ec2Metadata && app.ec2Metadata.instanceId;
const serverInstance = app.server && app.server.instanceId;
const instanceId = ec2Instance || serverInstance || "missing";
const processId = `#${process.pid}`;
return `${instanceId}${processId}`;
});
morgan.token("traceId", (req) => {
return (req.headers["x-amzn-trace-id"] || "").replace("=", "-");
});
morgan.format("request-log", `[${name}-req] serverId=":serverId" remoteaddr=":remote-addr" xapikey=":req[x-api-key]" date=":date[iso]" traceId=":traceId" method=:method url=":url" http=:http-version referrer=":referrer" useragent=":user-agent"`);
morgan.format("combined-log", `[${name}-res] serverId=":serverId" remoteaddr=":remote-addr" xapikey=":req[x-api-key]" responsetime=:response-time[1] date=":date[iso]" traceId=":traceId" method=:method url=":url" http=:http-version status=:status responselength=:res[content-length] referrer=":referrer" useragent=":user-agent"`);
if (config.request) {
app.use(morgan("request-log", {
stream,
immediate: true
}));
}
if (config.response) {
app.use(morgan("combined-log", {
stream
}));
}
};