UNPKG

gelfy

Version:

GELF (Graylog Extended Log Format) Integrations for Node.js Logging Libraries

57 lines (49 loc) 1.89 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;class BunyanAdapter { constructor(gelfStream) { this.stream = gelfStream; this.gelfClient = this.stream.client; } /** * Map bunyan log level to GELF log level * @param {number} bunyanLevel * @returns {number} */ mapGelfLevel(bunyanLevel) { const gelfLevel = this.gelfClient.config.levels; switch (bunyanLevel) { case 10:return gelfLevel.debug; case 20:return gelfLevel.debug; case 30:return gelfLevel.info; case 40:return gelfLevel.warning; case 50:return gelfLevel.error; case 60:return gelfLevel.emergency; default:return gelfLevel.warning;} } createTransformer() { return (log) => { const ignoreFields = ['msg', 'hostname', 'v']; const gelfMsg = { time: +new Date(log.time) / 1000, short_message: log.msg, facility: log.name, host: log.hostname, bunyan_level: log.level, level: this.mapGelfLevel(log.level) }; if (log.err && log.err.stack) { const errFile = log.err.stack.match(/\n\s+at .+ \(([^:]+):([0-9]+)/); if (errFile) { if (typeof errFile[1] === 'string' && errFile[1].trim()) gelfMsg.file = errFile[1]; // eslint-disable-line prefer-destructuring if (typeof errFile[2] === 'string' && errFile[1].trim()) gelfMsg.line = errFile[2]; // eslint-disable-line prefer-destructuring } } // TODO: Improve this using `reduce` for (const key in log) {// eslint-disable-line no-restricted-syntax if (Object.hasOwnProperty.call(log, key)) { if (ignoreFields.indexOf(key) < 0 && !Object.hasOwnProperty.call(gelfMsg, key)) { gelfMsg[key] = log[key]; } } } return gelfMsg; }; }}exports.default = BunyanAdapter;