72 lines
1.9 KiB
JavaScript
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();
|
|
}
|