winston-graylog2
Version:
A graylog2 transport for winston
104 lines (95 loc) • 3.1 kB
JavaScript
;
const assert = require('assert');
const winston = require('winston');
const {format} = require('logform');
const WinstonGraylog2 = require('../lib/winston-graylog2.js');
const dgram = require('dgram');
const socket = dgram.createSocket('udp4');
socket.bind(12201, '127.0.0.1');
const options = {
name: 'wgl-example',
level: 'debug',
silent: false,
graylog: {
servers: [{host: 'localhost', port: 12201}],
},
staticMeta: {
me: 'you',
},
};
const logger = winston.createLogger({
level: 'debug',
levels: {
emerg: 0,
alert: 1,
crit: 2,
error: 3,
warn: 4,
notice: 5,
info: 6,
debug: 7,
},
format: format.combine(format.errors({stack: true}), format.metadata()),
transports: [new WinstonGraylog2(options)],
});
socket.on('listening', () => {
let emergCheck;
let alertCheck;
let critCheck;
let errorCheck;
let warnCheck;
let noticeCheck;
let infoCheck;
let debugCheck;
socket.on('message', (msg) => {
const message = JSON.parse(msg.toString());
if (message.level === 0) emergCheck = message;
if (message.level === 1) alertCheck = message;
if (message.level === 2) critCheck = message;
if (message.level === 3) errorCheck = message;
if (message.level === 4) warnCheck = message;
if (message.level === 5) noticeCheck = message;
if (message.level === 6) infoCheck = message;
if (message.level === 7) debugCheck = message;
});
logger.emerg('emergency dude');
logger.alert('alert me');
logger.crit('critical engines');
logger.error(new Error('Fake Error'));
logger.warn('warning noise');
logger.notice('notice me senpai', {some: 'thing'});
logger.info('info achieved', {hi: 'there'});
logger.debug('debug something', {everything: 1});
describe('End-to-End test of winston-graylog2', function(done) {
it('should send emergency message with static metadata', () => {
assert.equal(emergCheck.short_message, 'emergency dude');
assert.equal(emergCheck._me, 'you');
});
it('should send alert message', () => {
assert.equal(alertCheck.short_message, 'alert me');
});
it('should send critical message', () => {
assert.equal(critCheck.short_message, 'critical engines');
});
it('should send error message', () => {
assert.equal(errorCheck.short_message, 'Fake Error');
assert(errorCheck._stack);
});
it('should send warn message', () => {
assert.equal(warnCheck.short_message, 'warning noise');
});
it('should send notice message with metadata', () => {
assert.equal(noticeCheck.short_message, 'notice me senpai');
assert.equal(noticeCheck._some, 'thing');
});
it('should send info message with metadata', () => {
assert.equal(infoCheck.short_message, 'info achieved');
assert.equal(infoCheck._hi, 'there');
});
it('should send debug message with metadata', () => {
assert.equal(debugCheck.short_message, 'debug something');
assert.equal(debugCheck._everything, 1);
});
after(() => socket.close(done));
});
});