unpkg/modules/middleware/requestLog.js

72 lines
1.9 KiB
JavaScript

import util from 'util';
// https://cloud.google.com/appengine/docs/standard/nodejs/runtime#environment_variables
const projectId = process.env.GOOGLE_CLOUD_PROJECT;
const enableDebugging = process.env.DEBUG != null;
function noop() {}
function createLog(req) {
const traceContext = req.headers['x-cloud-trace-context'];
if (projectId && traceContext) {
const [traceId, spanId] = traceContext.split('/');
const trace = `projects/${projectId}/traces/${traceId}`;
return {
debug: enableDebugging
? (format, ...args) => {
console.log(
JSON.stringify({
severity: 'DEBUG',
'logging.googleapis.com/trace': trace,
'logging.googleapis.com/spanId': spanId,
message: util.format(format, ...args)
})
);
}
: noop,
info: (format, ...args) => {
console.log(
JSON.stringify({
severity: 'INFO',
'logging.googleapis.com/trace': trace,
'logging.googleapis.com/spanId': spanId,
message: util.format(format, ...args)
})
);
},
error: (format, ...args) => {
console.error(
JSON.stringify({
severity: 'ERROR',
'logging.googleapis.com/trace': trace,
'logging.googleapis.com/spanId': spanId,
message: util.format(format, ...args)
})
);
}
};
}
return {
debug: enableDebugging
? (format, ...args) => {
console.log(util.format(format, ...args));
}
: noop,
info: (format, ...args) => {
console.log(util.format(format, ...args));
},
error: (format, ...args) => {
console.error(util.format(format, ...args));
}
};
}
export default function requestLog(req, res, next) {
req.log = createLog(req);
next();
}