mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 15:07:24 +08:00
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
const { version } = require('../package.json');
|
|
const path = require('path');
|
|
const { createLogger: createBunyanLogger, stdSerializers } = require('bunyan');
|
|
const { LOGGING_LEVEL, REVISION_HASH } = require('../config');
|
|
const debug = require('bunyan-debug-stream');
|
|
|
|
// Streams enables the ability for development logs to be readable to a human,
|
|
// but will send JSON logs in production that's parsable by a system like ELK.
|
|
const streams = (() => {
|
|
// In development, use the debug stream printer.
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
return [
|
|
{
|
|
level: LOGGING_LEVEL,
|
|
type: 'raw',
|
|
stream: debug({
|
|
basepath: path.resolve(__dirname, '..'),
|
|
forceColor: true,
|
|
}),
|
|
},
|
|
];
|
|
}
|
|
|
|
// In production, emit JSON.
|
|
return [{ stream: process.stdout, level: LOGGING_LEVEL }];
|
|
})();
|
|
|
|
// logger is the base logger used by all logging systems in Talk.
|
|
const logger = createBunyanLogger({
|
|
src: true,
|
|
name: 'talk',
|
|
version,
|
|
revision: REVISION_HASH,
|
|
streams,
|
|
serializers: stdSerializers,
|
|
});
|
|
|
|
/**
|
|
*
|
|
* @param {String} origin the origin name used by the logger
|
|
* @param {String} traceID the id of the request being made
|
|
*/
|
|
const createLogger = (origin, traceID) => logger.child({ origin, traceID });
|
|
|
|
module.exports = { logger, createLogger };
|