Skip to content

Commit

Permalink
config default logger transport
Browse files Browse the repository at this point in the history
  • Loading branch information
vunb committed Aug 1, 2019
1 parent 1175ed7 commit dc937cf
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 12 deletions.
29 changes: 27 additions & 2 deletions packages/core/engine/kites-instance.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { IKites, KitesInstance } from './kites-instance';
import * as stdMocks from 'std-mocks';
import { transports } from 'winston';
import { KitesExtension } from '../extensions/extensions';
import { DebugTransport } from '../logger';
import { engine } from './kites-factory';

function safeUnlink(fn: string) {
Expand Down Expand Up @@ -111,15 +112,15 @@ describe('kites logs', () => {
let stdoutContent = stdMocks.flush();
expect(stdoutContent.stdout.length).eq(0, 'stdout must be empty');

let allTransportAreSilent = Object.keys(app.logger.transports).every((name) => app.logger.transports[name].silent === true);
let allTransportAreSilent = app.logger.transports.every((x) => x.silent === true);
expect(allTransportAreSilent).eq(true, 'all transports are silent');
});

it('should have Debug transport enabled by default', () => {
return engine()
.init()
.then((app) => {
expect(app.logger.transports.some(x => x instanceof transports.Console)).eq(true, 'instanceOf Debug transport');
expect(app.logger.transports.some(x => x instanceof transports.Console)).eq(true, 'default transport');
});
});

Expand All @@ -139,6 +140,30 @@ describe('kites logs', () => {
});
});

it('should not load disabled transports', async () => {

return await engine({
logger: {
console: {
level: 'debug',
transport: 'console'
},
file: {
enabled: false,
level: 'debug',
transport: 'file',
filename: './test.log'
}
}
})
.init()
.then((app) => {
expect(app.logger.transports.length).eq(1);
expect(app.logger.transports.some(x => x instanceof transports.Console)).eq(true);
expect(app.logger.transports.some(x => x instanceof transports.File)).eq(false);
});
});

});

describe('kites initializeListeners', () => {
Expand Down
6 changes: 4 additions & 2 deletions packages/core/engine/kites-instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import * as _ from 'lodash';
// import * as nconf from 'nconf';
import * as path from 'path';
import { Logger, transports } from 'winston';
import Transport from 'winston-transport';

import { EventEmitter } from 'events';
import { ExtensionsManager } from '../extensions/extensions-manager';
Expand Down Expand Up @@ -93,7 +92,7 @@ export class KitesInstance extends EventEmitter implements IKites {
this.iocContainer = new Container();

// properties
this.logger = createLogger(this.name);
this.logger = createLogger(this.name, this.options.logger);
this.fnAfterConfigLoaded = () => this;
this.isReady = new Promise((resolve) => {
this.on('initialized', resolve);
Expand Down Expand Up @@ -362,6 +361,9 @@ export class KitesInstance extends EventEmitter implements IKites {

// add transport
if (knownTransports[tranOpts.transport]) {
if (this.logger.transports.some((x: any) => x.name === trName)) {
continue;
}
const transport = knownTransports[tranOpts.transport] as any;
const opts = _.extend(_.omit(tranOpts, knownOptions), { name: trName });
this.logger.add(new transport(opts));
Expand Down
4 changes: 3 additions & 1 deletion packages/core/logger/debug-transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@ import debug from 'debug';
import Transport from 'winston-transport';

export class DebugTransport extends Transport {
public name: string;

private debugger: debug.IDebugger;

constructor(options?: Transport.TransportStreamOptions, name?: string) {
super(options);
this.debugger = debug(name || 'kites');
this.debugger = debug('kites');
this.name = name || 'debug';
}

public log(info, callback: Function) {
Expand Down
18 changes: 11 additions & 7 deletions packages/core/logger/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import * as path from 'path';
import { format, Logger, loggers, transports } from 'winston';
import { format, Logger, loggers } from 'winston';
import { DebugTransport } from './debug-transport';

function createLogger(name: string, options?: any): Logger {
if (!loggers.has(name)) {
// add default Debug transport?
const defaultTransports = Object.keys(options || {}).length > 0 ? [] : [
new DebugTransport(options, name),
];

loggers.add(name, {
exitOnError: false,
Expand All @@ -14,10 +18,7 @@ function createLogger(name: string, options?: any): Logger {
format.timestamp(),
format.printf(({ level, message, label, timestamp }) => `${timestamp} [${label}] ${level}: ${message}`)
),
transports: [
// add default Console transport
new transports.Console(),
],
transports: defaultTransports,
});

loggers.get(name).on('error', (err: any) => {
Expand All @@ -36,9 +37,12 @@ function createLogger(name: string, options?: any): Logger {
}
});
} else {
// remove all transports and add default Console transport
// remove all transports and add default Debug transport
loggers.get(name).clear();
loggers.get(name).add(new transports.Console());

if (Object.keys(options || {}).length === 0) {
loggers.get(name).add(new DebugTransport(options, name));
}
}

return loggers.get(name);
Expand Down

0 comments on commit dc937cf

Please sign in to comment.