Skip to content

Commit

Permalink
- logLevel is typed now
Browse files Browse the repository at this point in the history
  • Loading branch information
airdeploy-eng committed Dec 17, 2020
1 parent 91fce0b commit 1a747d7
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 33 deletions.
1 change: 0 additions & 1 deletion jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ module.exports = {
testPathIgnorePatterns: ['/lib/', '/node_modules/'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
setupFilesAfterEnv: ['./jest.setup.js'],
collectCoverage: true,
testEnvironment: 'node',
globals: {
'ts-jest': {
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "flagger",
"version": "3.0.11",
"version": "3.0.12",
"description": "An open source JavaScript SDK for feature flagging (feature gating, feature toggles) for Node.js and Javascript applications",
"main": "dist/index.cjs.js",
"module": "dist/index.es.js",
Expand All @@ -15,7 +15,7 @@
"build": "tsc && yarn rollup -c && rimraf temp",
"lint": "tslint -p tsconfig.json -c tslint.json",
"lint:fix": "tslint -p tsconfig.json -c tslint.json --fix",
"test": "jest"
"test": "jest --collectCoverage"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^11.0.2",
Expand Down
10 changes: 7 additions & 3 deletions src/Flagger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
} from './constants'
import {Core} from './Core'
import Ingester from './ingester/Ingester'
import {Logger, LogLevel} from './Logger/Logger'
import {Logger, LogLevel, LogLevelStrings} from './Logger/Logger'
import SSE from './sse'
import {
escapeEntity,
Expand Down Expand Up @@ -92,7 +92,7 @@ export class FlaggerClass {
backupSourceURL?: string
sseURL?: string
ingestionURL?: string
logLevel?: LogLevel
logLevel?: LogLevelStrings | LogLevel
sdkInfo?: ISDKInfo
}) {
if (!apiKey) {
Expand All @@ -101,7 +101,11 @@ export class FlaggerClass {
}

if (logLevel) {
Logger.LOG_LEVEL = logLevel
if (typeof logLevel === 'string') {
Logger.LOG_LEVEL = Logger.parseLevel(logLevel)
} else {
Logger.LOG_LEVEL = logLevel
}
}

await this.shutdown()
Expand Down
26 changes: 13 additions & 13 deletions src/Logger/Logger.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ import {Logger, LogLevel} from './Logger'

describe('Logger tests', () => {
it('parseLevel test', () => {
expect(Logger.parseLevel('test')).toBe(LogLevel.ERROR)
expect(Logger.parseLevel('test')).toBe(LogLevel.error)

expect(Logger.parseLevel('warn')).toBe(LogLevel.WARN)
expect(Logger.parseLevel('WaRn')).toBe(LogLevel.WARN)
expect(Logger.parseLevel('WARNING')).toBe(LogLevel.WARN)
expect(Logger.parseLevel('warning')).toBe(LogLevel.WARN)
expect(Logger.parseLevel('warn')).toBe(LogLevel.warn)
expect(Logger.parseLevel('WaRn')).toBe(LogLevel.warn)
expect(Logger.parseLevel('WARNING')).toBe(LogLevel.warn)
expect(Logger.parseLevel('warning')).toBe(LogLevel.warn)

expect(Logger.parseLevel('debug')).toBe(LogLevel.DEBUG)
expect(Logger.parseLevel('DEBUG')).toBe(LogLevel.DEBUG)
expect(Logger.parseLevel('deb')).toBe(LogLevel.DEBUG)
expect(Logger.parseLevel('DeB')).toBe(LogLevel.DEBUG)
expect(Logger.parseLevel('debug')).toBe(LogLevel.debug)
expect(Logger.parseLevel('DEBUG')).toBe(LogLevel.debug)
expect(Logger.parseLevel('deb')).toBe(LogLevel.debug)
expect(Logger.parseLevel('DeB')).toBe(LogLevel.debug)

expect(Logger.parseLevel('err')).toBe(LogLevel.ERROR)
expect(Logger.parseLevel('ERR')).toBe(LogLevel.ERROR)
expect(Logger.parseLevel('ERRoR')).toBe(LogLevel.ERROR)
expect(Logger.parseLevel('error')).toBe(LogLevel.ERROR)
expect(Logger.parseLevel('err')).toBe(LogLevel.error)
expect(Logger.parseLevel('ERR')).toBe(LogLevel.error)
expect(Logger.parseLevel('ERRoR')).toBe(LogLevel.error)
expect(Logger.parseLevel('error')).toBe(LogLevel.error)
})
})
36 changes: 22 additions & 14 deletions src/Logger/Logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,42 @@ export interface ILogger {
error(msg: string): void
}

// 'warn' | 'warning' | 'deb' | 'debug' | 'err' | 'error'
export type LogLevelStrings = keyof typeof LogLevel

export enum LogLevel {
ERROR,
WARN,
DEBUG
error,
err,
warning,
warn,
debug,
deb
}

/**
* Write logs
* @class Logger
*/
export class Logger implements ILogger {
public static LOG_LEVEL: LogLevel = LogLevel.ERROR
public static LOG_LEVEL: LogLevel = LogLevel.error

/**
* Parse level and return it. By default returns ERROR level
* @param level argument to parse
*/
public static parseLevel(level: string): LogLevel {
if (level.toLowerCase() === 'warn' || level.toLowerCase() === 'warning') {
return LogLevel.WARN
return LogLevel.warn
}
if (level.toLowerCase() === 'debug' || level.toLowerCase() === 'deb') {
return LogLevel.DEBUG
return LogLevel.debug
}

if (level.toLowerCase() === 'err' || level.toLowerCase() === 'error') {
return LogLevel.ERROR
return LogLevel.error
}

return LogLevel.ERROR
return LogLevel.error
}
public name: string

Expand Down Expand Up @@ -84,14 +90,16 @@ export class Logger implements ILogger {
}

let log = console.log.bind(console)
if (type === LogLevel.ERROR && console.error) {
if (type === LogLevel.error && console.error) {
log = console.error.bind(console)
}
if (type === LogLevel.WARN && console.warn) {
if (type === LogLevel.warn && console.warn) {
log = console.warn.bind(console)
}

const prefix = `[${type}] ${this._ts()} ${this.name}`
const prefix = `[${LogLevel[type].toUpperCase()}] ${this._ts()} ${
this.name
}`

if (msg.length === 1 && typeof msg[0] === 'string') {
log(`${prefix} - ${msg[0]}`)
Expand All @@ -115,7 +123,7 @@ export class Logger implements ILogger {
* @param {string|object} msg - Logging message or object
*/
public warn(...msg: any[]) {
this._log(LogLevel.WARN, ...msg)
this._log(LogLevel.warn, ...msg)
}

/**
Expand All @@ -125,7 +133,7 @@ export class Logger implements ILogger {
* @param {string|object} msg - Logging message or object
*/
public error(...msg: any[]) {
this._log(LogLevel.ERROR, ...msg)
this._log(LogLevel.error, ...msg)
}

/**
Expand All @@ -135,6 +143,6 @@ export class Logger implements ILogger {
* @param {string|object} msg - Logging message or object
*/
public debug(...msg: any[]) {
this._log(LogLevel.DEBUG, ...msg)
this._log(LogLevel.debug, ...msg)
}
}

0 comments on commit 1a747d7

Please sign in to comment.