winston-gke
Version:
Winston logger for use with Google Container Engine's "fluentd-cloud-logging-gke" container
76 lines (51 loc) • 1.9 kB
JavaScript
;
var gke = require('./');
var winston = require('winston');
var stdMocks = require('std-mocks');
var expect = require('expect');
describe('winston-gke', function() {
it('sets log levels that match google stackdriver\'s level', function() {
var logger = gke(new winston.Logger());
expect(logger.debug).toBeA(Function);
expect(logger.info).toBeA(Function);
expect(logger.warning).toBeA(Function);
expect(logger.error).toBeA(Function);
expect(logger.critical).toBeA(Function);
});
it('sets winston\'s minimum log level to level passed', function() {
var onLog = expect.createSpy();
var logger = gke(new winston.Logger(), 'info');
stdMocks.use();
logger.on('logging', onLog);
logger.debug('message');
expect(onLog.calls.length).toBe(0);
logger.info('message');
expect(onLog.calls.length).toBe(1);
stdMocks.restore();
stdMocks.flush();
});
it('defaults winston\'s minimum log level to debug', function() {
var onLog = expect.createSpy();
var logger = gke(new winston.Logger());
stdMocks.use();
logger.on('logging', onLog);
logger.debug('message');
expect(onLog.calls.length).toBe(1);
stdMocks.restore();
stdMocks.flush();
});
it('formats console output to JSON consumable by the fluentd-cloud-logging-gke container', function() {
var output;
var logger = gke(new winston.Logger());
stdMocks.use();
logger.warning('message');
stdMocks.restore();
output = stdMocks.flush();
expect(output.stdout).toEqual('{"severity":"WARNING","message":"message"}\n');
stdMocks.use();
logger.info('info message', { anything: 'This is metadata' });
stdMocks.restore();
output = stdMocks.flush();
expect(output.stdout).toEqual('{"meta":{"anything":"This is metadata"},"severity":"INFO","message":"info message"}\n');
});
});