Skip to content

Commit 19a509c

Browse files
committed
(#371) Restructured logging code, extended functionality of ConsoleLogProvider for timestamps and log levels
1 parent af42f2c commit 19a509c

File tree

4 files changed

+118
-18
lines changed

4 files changed

+118
-18
lines changed

Diff for: lib/logging.function.ts

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { LogProviderInterface } from "./provider/log-provider.interface";
2+
import { ConsoleLogLevel, ConsoleLogProvider, ConsoleLogProviderConfig } from "./provider/io/console-log-provider.class";
3+
import providerRegistry from "./provider/provider-registry.class";
4+
5+
export const useLogger = (logger: LogProviderInterface) => {
6+
providerRegistry.registerLogProvider(logger);
7+
};
8+
9+
export const useConsoleLogger = (config?: ConsoleLogProviderConfig) => {
10+
providerRegistry.registerLogProvider(new ConsoleLogProvider(config));
11+
}
12+
13+
export { ConsoleLogLevel }

Diff for: lib/provider/io/console-log-provider.class.ts

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import { LogProviderInterface } from "../log-provider.interface";
2+
3+
export enum ConsoleLogLevel {
4+
TRACE,
5+
DEBUG,
6+
INFO,
7+
WARN,
8+
ERROR,
9+
}
10+
11+
export interface ConsoleLogProviderConfig {
12+
logLevel: ConsoleLogLevel,
13+
withTimeStamp: boolean,
14+
}
15+
16+
const defaultConfig: ConsoleLogProviderConfig = {
17+
logLevel: ConsoleLogLevel.INFO,
18+
withTimeStamp: true
19+
}
20+
21+
export class ConsoleLogProvider implements LogProviderInterface {
22+
constructor(private config: ConsoleLogProviderConfig = defaultConfig) {
23+
this.trace = this.trace.bind(this);
24+
this.debug = this.debug.bind(this);
25+
this.info = this.info.bind(this);
26+
this.warn = this.warn.bind(this);
27+
this.error = this.error.bind(this);
28+
}
29+
30+
private log(logLevel: ConsoleLogLevel, message: string | Error, data?: {}) {
31+
if (logLevel >= this.config.logLevel) {
32+
const timeStampPrefix = `${new Date().toISOString()} - `;
33+
const extendedMessage = `${(this.config.withTimeStamp == null || this.config.withTimeStamp) ? timeStampPrefix : ''}${ConsoleLogLevel[logLevel]} - ${(message instanceof Error) ? message.message : message}`;
34+
switch (logLevel) {
35+
case ConsoleLogLevel.TRACE:
36+
if (data) {
37+
console.trace(extendedMessage, data);
38+
} else {
39+
console.trace(extendedMessage);
40+
}
41+
break;
42+
case ConsoleLogLevel.DEBUG:
43+
if (data) {
44+
console.debug(extendedMessage, data);
45+
} else {
46+
console.debug(extendedMessage);
47+
}
48+
break;
49+
case ConsoleLogLevel.INFO:
50+
if (data) {
51+
console.info(extendedMessage, data);
52+
} else {
53+
console.info(extendedMessage);
54+
}
55+
break;
56+
case ConsoleLogLevel.WARN:
57+
if (data) {
58+
console.warn(extendedMessage, data);
59+
} else {
60+
console.warn(extendedMessage);
61+
}
62+
break;
63+
case ConsoleLogLevel.ERROR:
64+
(message as Error).message = extendedMessage;
65+
if (data) {
66+
console.error(message, data);
67+
} else {
68+
console.error(message);
69+
}
70+
break;
71+
}
72+
}
73+
}
74+
75+
public trace(message: string, data?: {}) {
76+
this.log(ConsoleLogLevel.TRACE, message, data);
77+
}
78+
public debug(message: string, data?: {}) {
79+
this.log(ConsoleLogLevel.DEBUG, message, data);
80+
}
81+
public info(message: string, data?: {}) {
82+
this.log(ConsoleLogLevel.INFO, message, data);
83+
}
84+
public warn(message: string, data?: {}) {
85+
this.log(ConsoleLogLevel.WARN, message, data);
86+
}
87+
public error(message: Error, data?: {}) {
88+
this.log(ConsoleLogLevel.ERROR, message, data);
89+
}
90+
}
91+

Diff for: lib/provider/io/noop-log-provider.class.ts

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { LogProviderInterface } from "../log-provider.interface";
2+
3+
export class NoopLogProvider implements LogProviderInterface {
4+
public trace(_: string, __?: {}) {
5+
}
6+
public debug(_: string, __?: {}) {
7+
}
8+
public info(_: string, __?: {}) {
9+
}
10+
public warn(_: string, __?: {}) {
11+
}
12+
public error(_: Error, __?: {}) {
13+
}
14+
}

Diff for: lib/provider/log-provider.interface.ts

-18
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,6 @@ export interface LogProviderInterface {
1111
error: ErrorLogFunction;
1212
}
1313

14-
export class ConsoleLogger implements LogProviderInterface {
15-
public trace(message: string, data?: {}) {
16-
console.trace(message, data);
17-
}
18-
public debug(message: string, data?: {}) {
19-
console.debug(message, data);
20-
}
21-
public info(message: string, data?: {}) {
22-
console.info(message, data);
23-
}
24-
public warn(message: string, data?: {}) {
25-
console.warn(message, data);
26-
}
27-
public error(message: Error, data?: {}) {
28-
console.error(message, data);
29-
}
30-
}
31-
3214
const nonErrorLevels = ['info', 'warn', 'debug', 'trace'];
3315
const errorLevels = ['error'];
3416

0 commit comments

Comments
 (0)