@furystack/core
Advanced tools
Comparing version 0.3.1 to 0.3.2
@@ -5,4 +5,4 @@ import { ILeveledLogEntry, ILogEntry } from "../Models/ILogEntries"; | ||
export declare const defaultLoggerOptions: ILoggerOptions; | ||
export declare abstract class AbstractLogger implements ILogger { | ||
readonly options: ILoggerOptions; | ||
export declare abstract class AbstractLogger<TOptions extends ILoggerOptions = ILoggerOptions> implements ILogger { | ||
readonly options: TOptions; | ||
constructor(options?: Partial<ILoggerOptions>); | ||
@@ -9,0 +9,0 @@ abstract AddEntry<T>(entry: ILeveledLogEntry<T>): Promise<void>; |
@@ -1,2 +0,3 @@ | ||
import { ILeveledLogEntry } from "../Models/ILogEntries"; | ||
import { ILoggerOptions } from "../Models"; | ||
import { ILeveledLogEntry, LogLevel } from "../Models/ILogEntries"; | ||
import { AbstractLogger } from "./AbstractLogger"; | ||
@@ -12,4 +13,15 @@ export declare const Reset = "\u001B[0m"; | ||
export declare const FgWhite = "\u001B[37m"; | ||
export declare class ConsoleLogger extends AbstractLogger { | ||
export declare const getLevelColor: (level: LogLevel) => "\u001B[31m" | "\u001B[32m" | "\u001B[33m" | "\u001B[34m"; | ||
export declare const defaultFormatter: <T>(entry: ILeveledLogEntry<T>) => string[]; | ||
export declare const verboseFormatter: <T>(entry: ILeveledLogEntry<T>) => (string | T)[]; | ||
export interface IConsoleLoggerOptions extends ILoggerOptions { | ||
formatter: <T>(entry: ILeveledLogEntry<T>) => any[]; | ||
} | ||
export declare class ConsoleLogger extends AbstractLogger<IConsoleLoggerOptions> { | ||
readonly options: IConsoleLoggerOptions; | ||
/** | ||
* | ||
*/ | ||
constructor(options?: Partial<IConsoleLoggerOptions>); | ||
AddEntry<T>(entry: ILeveledLogEntry<T>): Promise<void>; | ||
} |
@@ -22,28 +22,42 @@ "use strict"; | ||
exports.FgWhite = "\x1b[37m"; | ||
exports.getLevelColor = (level) => { | ||
switch (level) { | ||
case ILogEntries_1.LogLevel.Verbose: | ||
case ILogEntries_1.LogLevel.Debug: | ||
return exports.FgBlue; | ||
case ILogEntries_1.LogLevel.Information: | ||
return exports.FgGreen; | ||
case ILogEntries_1.LogLevel.Warning: | ||
return exports.FgYellow; | ||
case ILogEntries_1.LogLevel.Error: | ||
case ILogEntries_1.LogLevel.Fatal: | ||
return exports.FgRed; | ||
} | ||
}; | ||
exports.defaultFormatter = (entry) => { | ||
const fontColor = exports.getLevelColor(entry.level); | ||
return [`${fontColor}%s${exports.Reset}`, entry.scope, entry.message]; | ||
}; | ||
exports.verboseFormatter = (entry) => { | ||
const fontColor = exports.getLevelColor(entry.level); | ||
return entry.data ? | ||
[`${fontColor}%s${exports.Reset}`, entry.scope, entry.message, entry.data] | ||
: | ||
[`${fontColor}%s${exports.Reset}`, entry.scope, entry.message]; | ||
}; | ||
class ConsoleLogger extends AbstractLogger_1.AbstractLogger { | ||
/** | ||
* | ||
*/ | ||
constructor(options) { | ||
super(options); | ||
this.options = Object.assign({}, AbstractLogger_1.defaultLoggerOptions, { | ||
formatter: exports.defaultFormatter, | ||
}, options); | ||
} | ||
AddEntry(entry) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
let fontColor; | ||
switch (entry.level) { | ||
case ILogEntries_1.LogLevel.Verbose: | ||
fontColor = exports.FgBlue; | ||
break; | ||
case ILogEntries_1.LogLevel.Debug: | ||
case ILogEntries_1.LogLevel.Information: | ||
fontColor = exports.FgGreen; | ||
break; | ||
case ILogEntries_1.LogLevel.Warning: | ||
fontColor = exports.FgYellow; | ||
break; | ||
case ILogEntries_1.LogLevel.Error: | ||
case ILogEntries_1.LogLevel.Fatal: | ||
fontColor = exports.FgRed; | ||
break; | ||
} | ||
entry.data ? | ||
// tslint:disable-next-line:no-console | ||
console.log(`${fontColor}%s${exports.Reset}`, entry.scope, entry.message, entry.data) | ||
: | ||
// tslint:disable-next-line:no-console | ||
console.log(`${fontColor}%s${exports.Reset}`, entry.scope, entry.message); | ||
const data = this.options.formatter(entry); | ||
// tslint:disable-next-line:no-console | ||
console.log(...data); | ||
}); | ||
@@ -50,0 +64,0 @@ } |
{ | ||
"name": "@furystack/core", | ||
"version": "0.3.1", | ||
"version": "0.3.2", | ||
"description": "Core FuryStack package", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -10,5 +10,5 @@ import { ILeveledLogEntry, ILogEntry, LogLevel } from "../Models/ILogEntries"; | ||
export abstract class AbstractLogger implements ILogger { | ||
export abstract class AbstractLogger<TOptions extends ILoggerOptions = ILoggerOptions> implements ILogger { | ||
public readonly options: ILoggerOptions; | ||
public readonly options: TOptions; | ||
constructor(options?: Partial<ILoggerOptions>) { | ||
@@ -18,3 +18,3 @@ this.options = { | ||
...options, | ||
}; | ||
} as TOptions; | ||
} | ||
@@ -21,0 +21,0 @@ |
@@ -0,3 +1,4 @@ | ||
import { ILoggerOptions } from "../Models"; | ||
import { ILeveledLogEntry, LogLevel } from "../Models/ILogEntries"; | ||
import { AbstractLogger } from "./AbstractLogger"; | ||
import { AbstractLogger, defaultLoggerOptions } from "./AbstractLogger"; | ||
@@ -15,30 +16,59 @@ export const Reset = "\x1b[0m"; | ||
export class ConsoleLogger extends AbstractLogger { | ||
export const getLevelColor = (level: LogLevel) => { | ||
switch (level) { | ||
case LogLevel.Verbose: | ||
case LogLevel.Debug: | ||
return FgBlue; | ||
case LogLevel.Information: | ||
return FgGreen; | ||
case LogLevel.Warning: | ||
return FgYellow; | ||
case LogLevel.Error: | ||
case LogLevel.Fatal: | ||
return FgRed; | ||
} | ||
}; | ||
export const defaultFormatter = <T>(entry: ILeveledLogEntry<T>) => { | ||
const fontColor = getLevelColor(entry.level); | ||
return [`${fontColor}%s${Reset}`, entry.scope, entry.message]; | ||
}; | ||
export const verboseFormatter = <T>(entry: ILeveledLogEntry<T>) => { | ||
const fontColor = getLevelColor(entry.level); | ||
return entry.data ? | ||
[`${fontColor}%s${Reset}`, entry.scope, entry.message, entry.data] | ||
: | ||
[`${fontColor}%s${Reset}`, entry.scope, entry.message]; | ||
}; | ||
export interface IConsoleLoggerOptions extends ILoggerOptions { | ||
formatter: <T>(entry: ILeveledLogEntry<T>) => any[]; | ||
} | ||
export class ConsoleLogger extends AbstractLogger<IConsoleLoggerOptions> { | ||
public readonly options: IConsoleLoggerOptions; | ||
/** | ||
* | ||
*/ | ||
constructor(options?: Partial<IConsoleLoggerOptions> ) { | ||
super(options); | ||
this.options = { | ||
...defaultLoggerOptions, | ||
...{ | ||
formatter: defaultFormatter, | ||
}, | ||
...options, | ||
}; | ||
} | ||
public async AddEntry<T>(entry: ILeveledLogEntry<T>) { | ||
let fontColor!: string; | ||
switch (entry.level) { | ||
case LogLevel.Verbose: | ||
fontColor = FgBlue; | ||
break; | ||
case LogLevel.Debug: | ||
case LogLevel.Information: | ||
fontColor = FgGreen; | ||
break; | ||
case LogLevel.Warning: | ||
fontColor = FgYellow; | ||
break; | ||
case LogLevel.Error: | ||
case LogLevel.Fatal: | ||
fontColor = FgRed; | ||
break; | ||
} | ||
entry.data ? | ||
const data = this.options.formatter(entry); | ||
// tslint:disable-next-line:no-console | ||
console.log(`${fontColor}%s${Reset}`, entry.scope, entry.message, entry.data) | ||
: | ||
// tslint:disable-next-line:no-console | ||
console.log(`${fontColor}%s${Reset}`, entry.scope, entry.message); | ||
console.log(...data); | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
101194
1565