-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathlogger.effects.ts
More file actions
63 lines (57 loc) · 1.85 KB
/
logger.effects.ts
File metadata and controls
63 lines (57 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
* Copyright (c) 2025 Ping Identity Corporation. All rights reserved.
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
import { CustomLogger, LogLevel, LogMessage } from './logger.types.js';
export function logger(config: { level: LogLevel; custom?: CustomLogger }) {
let logLevel: LogLevel = config.level || 'info';
const custom = config.custom;
// Implement log functions
const logFunctions = {
error: (...args: LogMessage[]) =>
custom?.error ? custom.error(...args) : console.error(...args),
warn: (...args: LogMessage[]) => (custom?.warn ? custom.warn(...args) : console.warn(...args)),
info: (...args: LogMessage[]) => (custom?.info ? custom.info(...args) : console.info(...args)),
debug: (...args: LogMessage[]) =>
custom?.debug ? custom.debug(...args) : console.debug(...args),
};
// Implement level inclusion
const shouldLog = (level: LogLevel, currentLevel: LogLevel): boolean => {
const levelMap: { [key in LogLevel]: number } = {
error: 0,
warn: 1,
info: 2,
debug: 3,
none: -1,
};
return levelMap[level] <= levelMap[currentLevel] && levelMap[currentLevel] !== -1;
};
// Compose logger module
return {
changeLevel: (level: LogLevel) => {
logLevel = level;
},
error: (...args: LogMessage[]) => {
if (shouldLog('error', logLevel)) {
logFunctions.error(...args);
}
},
warn: (...args: LogMessage[]) => {
if (shouldLog('warn', logLevel)) {
logFunctions.warn(...args);
}
},
info: (...args: LogMessage[]) => {
if (shouldLog('info', logLevel)) {
logFunctions.info(...args);
}
},
debug: (...args: LogMessage[]) => {
if (shouldLog('debug', logLevel)) {
logFunctions.debug(...args);
}
},
};
}