Skip to content

Instantly share code, notes, and snippets.

@aalimovs
Created June 22, 2017 17:26
Show Gist options
  • Save aalimovs/a776fb79e1d190bc7cf343d6d7f19863 to your computer and use it in GitHub Desktop.
Save aalimovs/a776fb79e1d190bc7cf343d6d7f19863 to your computer and use it in GitHub Desktop.
const Logger = Bunyan.createLogger({
name: options.name,
level: 'trace',
streams: [
{ stream: process.stdout },
],
});
const goodOptions = {
ops: {
interval: 60000,
},
includes: {
request: ['headers', 'payload'],
response: ['payload'],
},
reporters: {
bunyan: [{
module: 'good-bunyan',
args: [
{ ops: '*', response: '*', log: '*', error: '*', request: '*' },
{
logger: Logger,
levels: {
ops: 'debug',
},
formatters: {
response: (payload) => {
if (payload.path === '/health') { return []; } // dont log health checks
// Original formatter with custom bits https://github.com/muzzley/good-bunyan/blob/master/lib/formatters.js#L59
let reqPayload;
let resPayload;
if (payload.requestPayload) {
if (typeof payload.requestPayload === 'object' || Array.isArray(payload.requestPayload)) {
try {
reqPayload = SafeStringify(payload.requestPayload);
} catch (e) {
return [{}, '[failed-response 1]'];
}
}
}
if (payload.responsePayload) {
if (typeof payload.responsePayload === 'object' || Array.isArray(payload.responsePayload)) {
if (payload.responsePayload instanceof Stream) {
resPayload = 'stream'; // don't try to stringify Stream
} else {
try {
resPayload = SafeStringify(payload.responsePayload);
} catch (e) {
return [{}, '[failed-response 2]'];
}
}
}
}
const res = {
id: payload.id, // custom
instance: payload.instance,
method: payload.method,
path: payload.path,
statusCode: payload.statusCode,
responseTime: `${payload.responseTime}ms`,
requestPayload: reqPayload,
responsePayload: resPayload,
query: payload.query, // custom
source: payload.source, // custom
};
return [{ res }, '[response]'];
},
},
},
],
}],
},
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment