Skip to content

Commit

Permalink
Logger getLevel() (slackapi#866)
Browse files Browse the repository at this point in the history
Logger getLevel()
  • Loading branch information
aoberoi authored Sep 14, 2019
2 parents 84b0042 + 6d3de37 commit ae18ead
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 1 deletion.
4 changes: 4 additions & 0 deletions packages/logger/.mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"require": ["ts-node/register", "source-map-support/register"],
"timeout": 3000
}
8 changes: 7 additions & 1 deletion packages/logger/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,19 @@
"build": "npm run build:clean && tsc",
"build:clean": "shx rm -rf ./dist",
"lint": "tslint --project .",
"test": "npm run build && echo \"Tests are not implemented.\" && exit 0"
"test": "npm run build && nyc mocha --config .mocharc.json src/*.spec.js"
},
"dependencies": {
"@types/node": ">=8.9.0"
},
"devDependencies": {
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.6",
"chai": "^4.2.0",
"mocha": "^6.1.4",
"nyc": "^14.1.1",
"shx": "^0.3.2",
"ts-node": "^8.2.0",
"tslint": "^5.13.1",
"tslint-config-airbnb": "^5.11.1",
"typescript": "^3.3.3333"
Expand Down
42 changes: 42 additions & 0 deletions packages/logger/src/index.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
require('mocha');
const { assert } = require('chai');
const { ConsoleLogger, LogLevel } = require('./index');

describe('logger', () => {
it('should have the default LogLevel', () => {
const logger = new ConsoleLogger();
assert.equal(logger.getLevel(), LogLevel.INFO);
});

it('should set LogLevel corrrectly', () => {
const logger = new ConsoleLogger();
assert.equal(logger.getLevel(), LogLevel.INFO);

[LogLevel.DEBUG, LogLevel.ERROR, LogLevel.WARN, LogLevel.INFO].forEach((level) => {
logger.setLevel(level);
assert.equal(logger.getLevel(), level);
});
});

it('should offer getLevel to test which level is currently set', () => {
let largeObjectGenerated = false;
function generateSomethingExpensive() {
largeObjectGenerated = true;
return JSON.stringify('{ description: "Something expensive to load" }');
}

const logger = new ConsoleLogger();
logger.setLevel(LogLevel.INFO);
if (logger.getLevel() === LogLevel.DEBUG) {
const largeObj = generateSomethingExpensive();
logger.debug(`debug: ${largeObj}`);
}
assert.isFalse(largeObjectGenerated);

logger.setLevel(LogLevel.DEBUG);
if (logger.getLevel() === LogLevel.DEBUG) {
generateSomethingExpensive();
}
assert.isTrue(largeObjectGenerated);
});
});
9 changes: 9 additions & 0 deletions packages/logger/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ export interface Logger {
*/
setLevel(level: LogLevel): void;

/**
* Return the current LogLevel.
*/
getLevel(): LogLevel;

/**
* This allows the instance to be named so that they can easily be filtered when many loggers are sending output
* to the same destination.
Expand Down Expand Up @@ -86,6 +91,10 @@ export class ConsoleLogger implements Logger {
this.name = '';
}

public getLevel(): LogLevel {
return this.level;
}

/**
* Sets the instance's log level so that only messages which are equal or more severe are output to the console.
*/
Expand Down

0 comments on commit ae18ead

Please sign in to comment.