@ncfour-us/logging 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -0
- package/lib/logger-factory.d.ts +4 -0
- package/lib/logger-factory.js +8 -0
- package/lib/logger-types.d.ts +29 -0
- package/lib/logger-types.js +3 -0
- package/lib/logger.d.ts +3 -0
- package/lib/logger.js +49 -0
- package/lib/logging.d.ts +28 -0
- package/lib/logging.js +97 -0
- package/lib/simple-logger.d.ts +23 -0
- package/lib/simple-logger.js +113 -0
- package/lib/winston-logger.d.ts +2 -0
- package/lib/winston-logger.js +103 -0
- package/package.json +137 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
Copyright (c) 2024 Tim Hahn
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
|
11
|
+
copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# replace this
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LogLevel, Logger } from './logging.js';
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Copyright (c) 2024 Tim Hahn
|
|
2
|
+
export { LogLevel, Logger } from './logging.js';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOEJBQThCO0FBRTlCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDI0IFRpbSBIYWhuXG5cbmV4cG9ydCB7IExvZ0xldmVsLCBMb2dnZXIgfSBmcm9tICcuL2xvZ2dpbmcuanMnO1xuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Copyright (C) 2025 Tim Hahn
|
|
2
|
+
import { SimpleLogger } from './simple-logger.js';
|
|
3
|
+
import { WinstonLogger } from './winston-logger.js';
|
|
4
|
+
export function createLogger(type, props) {
|
|
5
|
+
const retService = type === 'simple' ? SimpleLogger.getSimpleLogger(props) : WinstonLogger.getWinstonLogger(props);
|
|
6
|
+
return retService;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbG9nZ2VyLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOEJBQThCO0FBRzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLcEQsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFnQixFQUFFLEtBQW1CO0lBQ2hFLE1BQU0sVUFBVSxHQUNkLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVsRyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChDKSAyMDI1IFRpbSBIYWhuXG5cbmltcG9ydCB7IElMb2dnZXIsIExvZ2dlclByb3BzLCBMb2dnZXJTZXRMb2dnZXJQcm9wcyB9IGZyb20gJy4vbG9nZ2VyLmpzJztcbmltcG9ydCB7IFNpbXBsZUxvZ2dlciB9IGZyb20gJy4vc2ltcGxlLWxvZ2dlci5qcyc7XG5pbXBvcnQgeyBXaW5zdG9uTG9nZ2VyIH0gZnJvbSAnLi93aW5zdG9uLWxvZ2dlci5qcyc7XG5cbmV4cG9ydCB7IElMb2dnZXIsIExvZ2dlclByb3BzLCBMb2dnZXJTZXRMb2dnZXJQcm9wcyB9O1xuZXhwb3J0IHR5cGUgTG9nZ2VyVHlwZSA9ICdzaW1wbGUnIHwgJ3dpbnN0b24nO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKHR5cGU6IExvZ2dlclR5cGUsIHByb3BzPzogTG9nZ2VyUHJvcHMpOiBJTG9nZ2VyIHtcbiAgY29uc3QgcmV0U2VydmljZTogSUxvZ2dlciA9XG4gICAgdHlwZSA9PT0gJ3NpbXBsZScgPyBTaW1wbGVMb2dnZXIuZ2V0U2ltcGxlTG9nZ2VyKHByb3BzKSA6IFdpbnN0b25Mb2dnZXIuZ2V0V2luc3RvbkxvZ2dlcihwcm9wcyk7XG5cbiAgcmV0dXJuIHJldFNlcnZpY2U7XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type LoggerLevel = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
|
|
2
|
+
export type LoggerType = 'simple' | 'winston';
|
|
3
|
+
export interface LoggerProps {
|
|
4
|
+
name?: string;
|
|
5
|
+
level?: LoggerLevel;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
color?: boolean;
|
|
8
|
+
silent?: boolean;
|
|
9
|
+
timestamp?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface LoggerSetLoggerProps {
|
|
12
|
+
level?: LoggerLevel;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
color?: boolean;
|
|
15
|
+
silent?: boolean;
|
|
16
|
+
timestamp?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ILogger {
|
|
19
|
+
getName(): string;
|
|
20
|
+
getType(): LoggerType;
|
|
21
|
+
setLoggerProps(props: LoggerSetLoggerProps): void;
|
|
22
|
+
log(level: LoggerLevel, message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
23
|
+
fatal(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
24
|
+
error(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
25
|
+
warn(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
26
|
+
info(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
27
|
+
debug(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
28
|
+
trace(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
29
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Copyright (C) 2025 Tim Hahn
|
|
2
|
+
export {};
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci10eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKEMpIDIwMjUgVGltIEhhaG5cblxuZXhwb3J0IHR5cGUgTG9nZ2VyTGV2ZWwgPSAnZmF0YWwnIHwgJ2Vycm9yJyB8ICd3YXJuJyB8ICdpbmZvJyB8ICdkZWJ1ZycgfCAndHJhY2UnO1xuXG5leHBvcnQgdHlwZSBMb2dnZXJUeXBlID0gJ3NpbXBsZScgfCAnd2luc3Rvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyUHJvcHMge1xuICBuYW1lPzogc3RyaW5nO1xuICBsZXZlbD86IExvZ2dlckxldmVsO1xuICBqc29uPzogYm9vbGVhbjtcbiAgY29sb3I/OiBib29sZWFuO1xuICBzaWxlbnQ/OiBib29sZWFuO1xuICB0aW1lc3RhbXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlclNldExvZ2dlclByb3BzIHtcbiAgbGV2ZWw/OiBMb2dnZXJMZXZlbDtcbiAganNvbj86IGJvb2xlYW47XG4gIGNvbG9yPzogYm9vbGVhbjtcbiAgc2lsZW50PzogYm9vbGVhbjtcbiAgdGltZXN0YW1wPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyIHtcbiAgZ2V0TmFtZSgpOiBzdHJpbmc7XG5cbiAgZ2V0VHlwZSgpOiBMb2dnZXJUeXBlO1xuXG4gIHNldExvZ2dlclByb3BzKHByb3BzOiBMb2dnZXJTZXRMb2dnZXJQcm9wcyk6IHZvaWQ7XG5cbiAgbG9nKGxldmVsOiBMb2dnZXJMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQ7XG5cbiAgZmF0YWwobWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQ7XG5cbiAgZXJyb3IobWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQ7XG5cbiAgd2FybihtZXNzYWdlOiBzdHJpbmcsIC4uLnJlc3Q6IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0KVtdKTogdm9pZDtcblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkO1xuXG4gIGRlYnVnKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkO1xuXG4gIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkO1xufVxuIl19
|
package/lib/logger.d.ts
ADDED
package/lib/logger.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Copyright (C) 2025 Tim Hahn
|
|
2
|
+
// const isBrowser = typeof window !== 'undefined' && globalThis === window;
|
|
3
|
+
const isNode = typeof process !== 'undefined' && globalThis.process === process;
|
|
4
|
+
const loggerClasses = [];
|
|
5
|
+
const loggers = [];
|
|
6
|
+
async function initializeLoggerClasses() {
|
|
7
|
+
let createWinstonLogger;
|
|
8
|
+
let createSimpleLogger;
|
|
9
|
+
({ createSimpleLogger } = await import('./simple-logger.js'));
|
|
10
|
+
loggerClasses[0] = {
|
|
11
|
+
type: 'simple',
|
|
12
|
+
loggerCreator: createSimpleLogger,
|
|
13
|
+
};
|
|
14
|
+
if (isNode) {
|
|
15
|
+
({ createWinstonLogger } = await import('./winston-logger.js'));
|
|
16
|
+
loggerClasses[1] = {
|
|
17
|
+
type: 'winston',
|
|
18
|
+
loggerCreator: createWinstonLogger,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function createLogger(type, props) {
|
|
23
|
+
const loggerName = props?.name ?? 'default'; // covers case where props.name === ''
|
|
24
|
+
const existingLogger = loggers.find((logger) => logger.getName() === loggerName);
|
|
25
|
+
if (existingLogger) {
|
|
26
|
+
if (existingLogger.getType() !== type) {
|
|
27
|
+
existingLogger.warn(`createLogger: existing Logger found does not match type requested: ${type}`);
|
|
28
|
+
}
|
|
29
|
+
if (props) {
|
|
30
|
+
existingLogger.warn('createLogger: existing Logger found, supplied props ignored, use setLoggerProps()');
|
|
31
|
+
}
|
|
32
|
+
return existingLogger;
|
|
33
|
+
}
|
|
34
|
+
const newLoggerProps = { ...props };
|
|
35
|
+
newLoggerProps.name = loggerName;
|
|
36
|
+
let loggerClass = loggerClasses.find((item) => item.type === type);
|
|
37
|
+
let newLogger = undefined;
|
|
38
|
+
if (loggerClass) {
|
|
39
|
+
newLogger = loggerClass.loggerCreator(newLoggerProps);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
newLogger = loggerClasses[0].loggerCreator(newLoggerProps);
|
|
43
|
+
newLogger.log('warn', `loggerType: ${type} not found, falling back to SimpleLogger`);
|
|
44
|
+
}
|
|
45
|
+
loggers.push(newLogger);
|
|
46
|
+
return newLogger;
|
|
47
|
+
}
|
|
48
|
+
await initializeLoggerClasses();
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw4QkFBOEI7QUFjOUIsNEVBQTRFO0FBQzVFLE1BQU0sTUFBTSxHQUFHLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQztBQUVoRixNQUFNLGFBQWEsR0FBa0IsRUFBRSxDQUFDO0FBRXhDLE1BQU0sT0FBTyxHQUFjLEVBQUUsQ0FBQztBQUU5QixLQUFLLFVBQVUsdUJBQXVCO0lBQ3BDLElBQUksbUJBQW1CLENBQUM7SUFDeEIsSUFBSSxrQkFBa0IsQ0FBQztJQUV2QixDQUFDLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFFOUQsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBQ2pCLElBQUksRUFBRSxRQUFRO1FBQ2QsYUFBYSxFQUFFLGtCQUFrQjtLQUNsQyxDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUVoRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDakIsSUFBSSxFQUFFLFNBQVM7WUFDZixhQUFhLEVBQUUsbUJBQW1CO1NBQ25DLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBZ0IsRUFBRSxLQUFtQjtJQUNoRSxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLFNBQVMsQ0FBQyxDQUFDLHNDQUFzQztJQUVuRixNQUFNLGNBQWMsR0FBd0IsT0FBTyxDQUFDLElBQUksQ0FDdEQsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxVQUFVLENBQzVDLENBQUM7SUFFRixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3RDLGNBQWMsQ0FBQyxJQUFJLENBQ2pCLHNFQUFzRSxJQUFJLEVBQUUsQ0FDN0UsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsY0FBYyxDQUFDLElBQUksQ0FDakIsbUZBQW1GLENBQ3BGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFnQixFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDakQsY0FBYyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFFakMsSUFBSSxXQUFXLEdBQTRCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDNUYsSUFBSSxTQUFTLEdBQXdCLFNBQVMsQ0FBQztJQUMvQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7U0FBTSxDQUFDO1FBQ04sU0FBUyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsZUFBZSxJQUFJLDBDQUEwQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFeEIsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sdUJBQXVCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoQykgMjAyNSBUaW0gSGFoblxuXG5pbXBvcnQge1xuICBJTG9nZ2VyLFxuICBMb2dnZXJUeXBlLFxuICBMb2dnZXJMZXZlbCxcbiAgTG9nZ2VyUHJvcHMsXG4gIExvZ2dlclNldExvZ2dlclByb3BzLFxufSBmcm9tICcuL2xvZ2dlci10eXBlcy5qcyc7XG5cbmV4cG9ydCB7IElMb2dnZXIsIExvZ2dlckxldmVsLCBMb2dnZXJQcm9wcywgTG9nZ2VyU2V0TG9nZ2VyUHJvcHMgfTtcblxudHlwZSBMb2dnZXJDbGFzcyA9IHsgdHlwZTogTG9nZ2VyVHlwZTsgbG9nZ2VyQ3JlYXRvcjogKHByb3BzPzogTG9nZ2VyUHJvcHMpID0+IElMb2dnZXIgfTtcblxuLy8gY29uc3QgaXNCcm93c2VyID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcyA9PT0gd2luZG93O1xuY29uc3QgaXNOb2RlID0gdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMucHJvY2VzcyA9PT0gcHJvY2VzcztcblxuY29uc3QgbG9nZ2VyQ2xhc3NlczogTG9nZ2VyQ2xhc3NbXSA9IFtdO1xuXG5jb25zdCBsb2dnZXJzOiBJTG9nZ2VyW10gPSBbXTtcblxuYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZUxvZ2dlckNsYXNzZXMoKSB7XG4gIGxldCBjcmVhdGVXaW5zdG9uTG9nZ2VyO1xuICBsZXQgY3JlYXRlU2ltcGxlTG9nZ2VyO1xuXG4gICh7IGNyZWF0ZVNpbXBsZUxvZ2dlciB9ID0gYXdhaXQgaW1wb3J0KCcuL3NpbXBsZS1sb2dnZXIuanMnKSk7XG5cbiAgbG9nZ2VyQ2xhc3Nlc1swXSA9IHtcbiAgICB0eXBlOiAnc2ltcGxlJyxcbiAgICBsb2dnZXJDcmVhdG9yOiBjcmVhdGVTaW1wbGVMb2dnZXIsXG4gIH07XG5cbiAgaWYgKGlzTm9kZSkge1xuICAgICh7IGNyZWF0ZVdpbnN0b25Mb2dnZXIgfSA9IGF3YWl0IGltcG9ydCgnLi93aW5zdG9uLWxvZ2dlci5qcycpKTtcblxuICAgIGxvZ2dlckNsYXNzZXNbMV0gPSB7XG4gICAgICB0eXBlOiAnd2luc3RvbicsXG4gICAgICBsb2dnZXJDcmVhdG9yOiBjcmVhdGVXaW5zdG9uTG9nZ2VyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dlcih0eXBlOiBMb2dnZXJUeXBlLCBwcm9wcz86IExvZ2dlclByb3BzKTogSUxvZ2dlciB7XG4gIGNvbnN0IGxvZ2dlck5hbWUgPSBwcm9wcz8ubmFtZSA/PyAnZGVmYXVsdCc7IC8vIGNvdmVycyBjYXNlIHdoZXJlIHByb3BzLm5hbWUgPT09ICcnXG5cbiAgY29uc3QgZXhpc3RpbmdMb2dnZXI6IElMb2dnZXIgfCB1bmRlZmluZWQgPSBsb2dnZXJzLmZpbmQoXG4gICAgKGxvZ2dlcikgPT4gbG9nZ2VyLmdldE5hbWUoKSA9PT0gbG9nZ2VyTmFtZSxcbiAgKTtcblxuICBpZiAoZXhpc3RpbmdMb2dnZXIpIHtcbiAgICBpZiAoZXhpc3RpbmdMb2dnZXIuZ2V0VHlwZSgpICE9PSB0eXBlKSB7XG4gICAgICBleGlzdGluZ0xvZ2dlci53YXJuKFxuICAgICAgICBgY3JlYXRlTG9nZ2VyOiBleGlzdGluZyBMb2dnZXIgZm91bmQgZG9lcyBub3QgbWF0Y2ggdHlwZSByZXF1ZXN0ZWQ6ICR7dHlwZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBleGlzdGluZ0xvZ2dlci53YXJuKFxuICAgICAgICAnY3JlYXRlTG9nZ2VyOiBleGlzdGluZyBMb2dnZXIgZm91bmQsIHN1cHBsaWVkIHByb3BzIGlnbm9yZWQsIHVzZSBzZXRMb2dnZXJQcm9wcygpJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBleGlzdGluZ0xvZ2dlcjtcbiAgfVxuXG4gIGNvbnN0IG5ld0xvZ2dlclByb3BzOiBMb2dnZXJQcm9wcyA9IHsgLi4ucHJvcHMgfTtcbiAgbmV3TG9nZ2VyUHJvcHMubmFtZSA9IGxvZ2dlck5hbWU7XG5cbiAgbGV0IGxvZ2dlckNsYXNzOiBMb2dnZXJDbGFzcyB8IHVuZGVmaW5lZCA9IGxvZ2dlckNsYXNzZXMuZmluZCgoaXRlbSkgPT4gaXRlbS50eXBlID09PSB0eXBlKTtcbiAgbGV0IG5ld0xvZ2dlcjogSUxvZ2dlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgaWYgKGxvZ2dlckNsYXNzKSB7XG4gICAgbmV3TG9nZ2VyID0gbG9nZ2VyQ2xhc3MubG9nZ2VyQ3JlYXRvcihuZXdMb2dnZXJQcm9wcyk7XG4gIH0gZWxzZSB7XG4gICAgbmV3TG9nZ2VyID0gbG9nZ2VyQ2xhc3Nlc1swXS5sb2dnZXJDcmVhdG9yKG5ld0xvZ2dlclByb3BzKTtcbiAgICBuZXdMb2dnZXIubG9nKCd3YXJuJywgYGxvZ2dlclR5cGU6ICR7dHlwZX0gbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gU2ltcGxlTG9nZ2VyYCk7XG4gIH1cblxuICBsb2dnZXJzLnB1c2gobmV3TG9nZ2VyKTtcblxuICByZXR1cm4gbmV3TG9nZ2VyO1xufVxuXG5hd2FpdCBpbml0aWFsaXplTG9nZ2VyQ2xhc3NlcygpO1xuIl19
|
package/lib/logging.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
SEVERE = 10,
|
|
3
|
+
ERROR = 20,
|
|
4
|
+
INFO = 30,
|
|
5
|
+
DEBUG = 40,
|
|
6
|
+
ALL = 100
|
|
7
|
+
}
|
|
8
|
+
export declare class Logger {
|
|
9
|
+
static getLogger(component?: string): Logger;
|
|
10
|
+
private component;
|
|
11
|
+
private logLevel;
|
|
12
|
+
private insertPrefix;
|
|
13
|
+
private insertTimestamp;
|
|
14
|
+
private insertLevel;
|
|
15
|
+
private useColor;
|
|
16
|
+
private constructor();
|
|
17
|
+
setLevel(logLevel: LogLevel): void;
|
|
18
|
+
setInsertPrefix(insertPrefix: boolean): void;
|
|
19
|
+
setInsertTimestamp(insertTimestamp: boolean): void;
|
|
20
|
+
setInsertLevel(insertLevel: boolean): void;
|
|
21
|
+
setUseColor(useColor: boolean): void;
|
|
22
|
+
debug(message: string): void;
|
|
23
|
+
info(message: string): void;
|
|
24
|
+
error(message: string): void;
|
|
25
|
+
severe(message: string): void;
|
|
26
|
+
log(level: LogLevel, message: string): void;
|
|
27
|
+
private emitMessage;
|
|
28
|
+
}
|
package/lib/logging.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Copyright (c) 2024 Tim Hahn
|
|
2
|
+
export var LogLevel;
|
|
3
|
+
(function (LogLevel) {
|
|
4
|
+
LogLevel[LogLevel["SEVERE"] = 10] = "SEVERE";
|
|
5
|
+
LogLevel[LogLevel["ERROR"] = 20] = "ERROR";
|
|
6
|
+
LogLevel[LogLevel["INFO"] = 30] = "INFO";
|
|
7
|
+
LogLevel[LogLevel["DEBUG"] = 40] = "DEBUG";
|
|
8
|
+
LogLevel[LogLevel["ALL"] = 100] = "ALL";
|
|
9
|
+
})(LogLevel || (LogLevel = {}));
|
|
10
|
+
const logLevelStrings = {
|
|
11
|
+
10: 'SEV',
|
|
12
|
+
20: 'ERR',
|
|
13
|
+
30: 'INF',
|
|
14
|
+
40: 'DEB',
|
|
15
|
+
100: 'ALL',
|
|
16
|
+
};
|
|
17
|
+
const loggers = {};
|
|
18
|
+
export class Logger {
|
|
19
|
+
// Factory method (static)
|
|
20
|
+
static getLogger(component) {
|
|
21
|
+
let logger = loggers.root;
|
|
22
|
+
if (component) {
|
|
23
|
+
if (!(component in loggers)) {
|
|
24
|
+
loggers[component] = new Logger(component);
|
|
25
|
+
}
|
|
26
|
+
logger = loggers[component];
|
|
27
|
+
}
|
|
28
|
+
return logger;
|
|
29
|
+
}
|
|
30
|
+
component;
|
|
31
|
+
logLevel;
|
|
32
|
+
insertPrefix;
|
|
33
|
+
insertTimestamp;
|
|
34
|
+
insertLevel;
|
|
35
|
+
useColor;
|
|
36
|
+
// callable only from static methods
|
|
37
|
+
constructor(component) {
|
|
38
|
+
this.component = component;
|
|
39
|
+
this.logLevel = LogLevel.INFO;
|
|
40
|
+
this.insertPrefix = true;
|
|
41
|
+
this.insertTimestamp = false;
|
|
42
|
+
this.insertLevel = false;
|
|
43
|
+
this.useColor = false;
|
|
44
|
+
}
|
|
45
|
+
setLevel(logLevel) {
|
|
46
|
+
this.logLevel = logLevel;
|
|
47
|
+
}
|
|
48
|
+
setInsertPrefix(insertPrefix) {
|
|
49
|
+
this.insertPrefix = insertPrefix;
|
|
50
|
+
}
|
|
51
|
+
setInsertTimestamp(insertTimestamp) {
|
|
52
|
+
this.insertTimestamp = insertTimestamp;
|
|
53
|
+
}
|
|
54
|
+
setInsertLevel(insertLevel) {
|
|
55
|
+
this.insertLevel = insertLevel;
|
|
56
|
+
}
|
|
57
|
+
setUseColor(useColor) {
|
|
58
|
+
this.useColor = useColor;
|
|
59
|
+
}
|
|
60
|
+
debug(message) {
|
|
61
|
+
this.log(LogLevel.DEBUG, message);
|
|
62
|
+
}
|
|
63
|
+
info(message) {
|
|
64
|
+
this.log(LogLevel.INFO, message);
|
|
65
|
+
}
|
|
66
|
+
error(message) {
|
|
67
|
+
this.log(LogLevel.ERROR, message);
|
|
68
|
+
}
|
|
69
|
+
severe(message) {
|
|
70
|
+
this.log(LogLevel.SEVERE, message);
|
|
71
|
+
}
|
|
72
|
+
log(level, message) {
|
|
73
|
+
if (this.logLevel >= level) {
|
|
74
|
+
this.emitMessage(level, message);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
emitMessage(level, message) {
|
|
78
|
+
let prefixStr = '';
|
|
79
|
+
let levelStr = '';
|
|
80
|
+
let timestampStr = '';
|
|
81
|
+
if (this.insertPrefix) {
|
|
82
|
+
if (this.insertLevel) {
|
|
83
|
+
levelStr = `[${logLevelStrings[level]}] `;
|
|
84
|
+
}
|
|
85
|
+
if (this.insertTimestamp) {
|
|
86
|
+
const date = new Date();
|
|
87
|
+
timestampStr = `[${date.toISOString()}] `;
|
|
88
|
+
}
|
|
89
|
+
if (this.useColor) {
|
|
90
|
+
}
|
|
91
|
+
prefixStr = `${levelStr}${timestampStr}(${this.component}): `;
|
|
92
|
+
}
|
|
93
|
+
console.log(`${prefixStr}${message}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
loggers.root = Logger.getLogger('root');
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2dnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQUU5QixNQUFNLENBQU4sSUFBWSxRQU1YO0FBTkQsV0FBWSxRQUFRO0lBQ2xCLDRDQUFXLENBQUE7SUFDWCwwQ0FBVSxDQUFBO0lBQ1Ysd0NBQVMsQ0FBQTtJQUNULDBDQUFVLENBQUE7SUFDVix1Q0FBUyxDQUFBO0FBQ1gsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CO0FBRUQsTUFBTSxlQUFlLEdBQTZCO0lBQ2hELEVBQUUsRUFBRSxLQUFLO0lBQ1QsRUFBRSxFQUFFLEtBQUs7SUFDVCxFQUFFLEVBQUUsS0FBSztJQUNULEVBQUUsRUFBRSxLQUFLO0lBQ1QsR0FBRyxFQUFFLEtBQUs7Q0FDWCxDQUFDO0FBRUYsTUFBTSxPQUFPLEdBQTZCLEVBQUUsQ0FBQztBQUU3QyxNQUFNLE9BQU8sTUFBTTtJQUNqQiwwQkFBMEI7SUFDMUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFrQjtRQUNqQyxJQUFJLE1BQU0sR0FBVyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBRWxDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sU0FBUyxDQUFTO0lBQ2xCLFFBQVEsQ0FBVztJQUNuQixZQUFZLENBQVU7SUFDdEIsZUFBZSxDQUFVO0lBQ3pCLFdBQVcsQ0FBVTtJQUNyQixRQUFRLENBQVU7SUFFMUIsb0NBQW9DO0lBQ3BDLFlBQW9CLFNBQWlC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aG5cblxuZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xuICBTRVZFUkUgPSAxMCxcbiAgRVJST1IgPSAyMCxcbiAgSU5GTyA9IDMwLFxuICBERUJVRyA9IDQwLFxuICBBTEwgPSAxMDAsXG59XG5cbmNvbnN0IGxvZ0xldmVsU3RyaW5nczogeyBbaWQ6IG51bWJlcl06IHN0cmluZyB9ID0ge1xuICAxMDogJ1NFVicsXG4gIDIwOiAnRVJSJyxcbiAgMzA6ICdJTkYnLFxuICA0MDogJ0RFQicsXG4gIDEwMDogJ0FMTCcsXG59O1xuXG5jb25zdCBsb2dnZXJzOiB7IFtpZDogc3RyaW5nXTogTG9nZ2VyIH0gPSB7fTtcblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIC8vIEZhY3RvcnkgbWV0aG9kIChzdGF0aWMpXG4gIHN0YXRpYyBnZXRMb2dnZXIoY29tcG9uZW50Pzogc3RyaW5nKTogTG9nZ2VyIHtcbiAgICBsZXQgbG9nZ2VyOiBMb2dnZXIgPSBsb2dnZXJzLnJvb3Q7XG5cbiAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICBpZiAoIShjb21wb25lbnQgaW4gbG9nZ2VycykpIHtcbiAgICAgICAgbG9nZ2Vyc1tjb21wb25lbnRdID0gbmV3IExvZ2dlcihjb21wb25lbnQpO1xuICAgICAgfVxuICAgICAgbG9nZ2VyID0gbG9nZ2Vyc1tjb21wb25lbnRdO1xuICAgIH1cblxuICAgIHJldHVybiBsb2dnZXI7XG4gIH1cblxuICBwcml2YXRlIGNvbXBvbmVudDogc3RyaW5nO1xuICBwcml2YXRlIGxvZ0xldmVsOiBMb2dMZXZlbDtcbiAgcHJpdmF0ZSBpbnNlcnRQcmVmaXg6IGJvb2xlYW47XG4gIHByaXZhdGUgaW5zZXJ0VGltZXN0YW1wOiBib29sZWFuO1xuICBwcml2YXRlIGluc2VydExldmVsOiBib29sZWFuO1xuICBwcml2YXRlIHVzZUNvbG9yOiBib29sZWFuO1xuXG4gIC8vIGNhbGxhYmxlIG9ubHkgZnJvbSBzdGF0aWMgbWV0aG9kc1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKGNvbXBvbmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdGhpcy5sb2dMZXZlbCA9IExvZ0xldmVsLklORk87XG4gICAgdGhpcy5pbnNlcnRQcmVmaXggPSB0cnVlO1xuICAgIHRoaXMuaW5zZXJ0VGltZXN0YW1wID0gZmFsc2U7XG4gICAgdGhpcy5pbnNlcnRMZXZlbCA9IGZhbHNlO1xuICAgIHRoaXMudXNlQ29sb3IgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMZXZlbChsb2dMZXZlbDogTG9nTGV2ZWwpIHtcbiAgICB0aGlzLmxvZ0xldmVsID0gbG9nTGV2ZWw7XG4gIH1cblxuICBwdWJsaWMgc2V0SW5zZXJ0UHJlZml4KGluc2VydFByZWZpeDogYm9vbGVhbikge1xuICAgIHRoaXMuaW5zZXJ0UHJlZml4ID0gaW5zZXJ0UHJlZml4O1xuICB9XG5cbiAgcHVibGljIHNldEluc2VydFRpbWVzdGFtcChpbnNlcnRUaW1lc3RhbXA6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmluc2VydFRpbWVzdGFtcCA9IGluc2VydFRpbWVzdGFtcDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbnNlcnRMZXZlbChpbnNlcnRMZXZlbDogYm9vbGVhbikge1xuICAgIHRoaXMuaW5zZXJ0TGV2ZWwgPSBpbnNlcnRMZXZlbDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRVc2VDb2xvcih1c2VDb2xvcjogYm9vbGVhbikge1xuICAgIHRoaXMudXNlQ29sb3IgPSB1c2VDb2xvcjtcbiAgfVxuXG4gIHB1YmxpYyBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5ERUJVRywgbWVzc2FnZSk7XG4gIH1cblxuICBwdWJsaWMgaW5mbyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5JTkZPLCBtZXNzYWdlKTtcbiAgfVxuXG4gIHB1YmxpYyBlcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5FUlJPUiwgbWVzc2FnZSk7XG4gIH1cblxuICBwdWJsaWMgc2V2ZXJlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLlNFVkVSRSwgbWVzc2FnZSk7XG4gIH1cblxuICBwdWJsaWMgbG9nKGxldmVsOiBMb2dMZXZlbCwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMubG9nTGV2ZWwgPj0gbGV2ZWwpIHtcbiAgICAgIHRoaXMuZW1pdE1lc3NhZ2UobGV2ZWwsIG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdE1lc3NhZ2UobGV2ZWw6IExvZ0xldmVsLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBsZXQgcHJlZml4U3RyID0gJyc7XG4gICAgbGV0IGxldmVsU3RyID0gJyc7XG4gICAgbGV0IHRpbWVzdGFtcFN0ciA9ICcnO1xuXG4gICAgaWYgKHRoaXMuaW5zZXJ0UHJlZml4KSB7XG4gICAgICBpZiAodGhpcy5pbnNlcnRMZXZlbCkge1xuICAgICAgICBsZXZlbFN0ciA9IGBbJHtsb2dMZXZlbFN0cmluZ3NbbGV2ZWxdfV0gYDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmluc2VydFRpbWVzdGFtcCkge1xuICAgICAgICBjb25zdCBkYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgdGltZXN0YW1wU3RyID0gYFske2RhdGUudG9JU09TdHJpbmcoKX1dIGA7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy51c2VDb2xvcikge1xuICAgICAgfVxuICAgICAgcHJlZml4U3RyID0gYCR7bGV2ZWxTdHJ9JHt0aW1lc3RhbXBTdHJ9KCR7dGhpcy5jb21wb25lbnR9KTogYDtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhgJHtwcmVmaXhTdHJ9JHttZXNzYWdlfWApO1xuICB9XG59XG5cbmxvZ2dlcnMucm9vdCA9IExvZ2dlci5nZXRMb2dnZXIoJ3Jvb3QnKTtcbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ILogger, LoggerType, LoggerLevel, LoggerProps, LoggerSetLoggerProps } from './logger-types.js';
|
|
2
|
+
export declare class SimpleLogger implements ILogger {
|
|
3
|
+
name: string;
|
|
4
|
+
level: string;
|
|
5
|
+
json: boolean;
|
|
6
|
+
color: boolean;
|
|
7
|
+
silent: boolean;
|
|
8
|
+
timestamp: boolean;
|
|
9
|
+
private numericLevel;
|
|
10
|
+
constructor(props?: LoggerProps);
|
|
11
|
+
private stringifyLogRecord;
|
|
12
|
+
getName(): string;
|
|
13
|
+
getType(): LoggerType;
|
|
14
|
+
setLoggerProps(props: LoggerSetLoggerProps): void;
|
|
15
|
+
log(level: LoggerLevel, message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
16
|
+
fatal(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
17
|
+
error(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
18
|
+
warn(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
19
|
+
info(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
20
|
+
debug(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
21
|
+
trace(message: string, ...rest: (string | number | boolean | object)[]): void;
|
|
22
|
+
}
|
|
23
|
+
export declare function createSimpleLogger(props?: LoggerProps): ILogger;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Copyright (C) 2025 Tim Hahn
|
|
2
|
+
// import { Date } from 'date';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
const logLevels = {
|
|
5
|
+
fatal: {
|
|
6
|
+
numericLevel: 10,
|
|
7
|
+
colorizer: chalk.magenta,
|
|
8
|
+
},
|
|
9
|
+
error: {
|
|
10
|
+
numericLevel: 20,
|
|
11
|
+
colorizer: chalk.red,
|
|
12
|
+
},
|
|
13
|
+
warn: {
|
|
14
|
+
numericLevel: 30,
|
|
15
|
+
colorizer: chalk.yellow,
|
|
16
|
+
},
|
|
17
|
+
info: {
|
|
18
|
+
numericLevel: 40,
|
|
19
|
+
colorizer: chalk.green,
|
|
20
|
+
},
|
|
21
|
+
debug: {
|
|
22
|
+
numericLevel: 50,
|
|
23
|
+
colorizer: chalk.white,
|
|
24
|
+
},
|
|
25
|
+
trace: {
|
|
26
|
+
numericLevel: 60,
|
|
27
|
+
colorizer: chalk.gray,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
export class SimpleLogger {
|
|
31
|
+
name;
|
|
32
|
+
level;
|
|
33
|
+
json;
|
|
34
|
+
color;
|
|
35
|
+
silent;
|
|
36
|
+
timestamp;
|
|
37
|
+
numericLevel;
|
|
38
|
+
constructor(props) {
|
|
39
|
+
this.name = props?.name ?? 'default';
|
|
40
|
+
this.level = props?.level ?? 'error';
|
|
41
|
+
this.json = props?.json ?? true;
|
|
42
|
+
this.color = props?.color ?? false;
|
|
43
|
+
this.silent = props?.silent ?? false;
|
|
44
|
+
this.timestamp = props?.timestamp ?? true;
|
|
45
|
+
this.numericLevel = logLevels[this.level].numericLevel;
|
|
46
|
+
}
|
|
47
|
+
stringifyLogRecord(level, message, ...rest) {
|
|
48
|
+
let messageString = '';
|
|
49
|
+
if (this.json) {
|
|
50
|
+
messageString = JSON.stringify({
|
|
51
|
+
level: level,
|
|
52
|
+
timestamp: new Date(Date.now()).toISOString(),
|
|
53
|
+
name: this.name,
|
|
54
|
+
message: message,
|
|
55
|
+
...rest,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// messageString = messageString + this.timestamp ? '[' + new Date(Date.now()).toISOString() : "[";
|
|
60
|
+
messageString =
|
|
61
|
+
messageString + (this.timestamp ? `[${new Date(Date.now()).toISOString()} ` : '[');
|
|
62
|
+
messageString = messageString + (this.name !== 'default' ? `${this.name} ` : '');
|
|
63
|
+
messageString =
|
|
64
|
+
messageString + `(${this.color ? logLevels[level].colorizer(level) : level})]`;
|
|
65
|
+
messageString =
|
|
66
|
+
messageString + ` ${this.color ? logLevels[level].colorizer(message) : message}`;
|
|
67
|
+
messageString =
|
|
68
|
+
rest.length > 0 ? messageString + ` ${JSON.stringify({ ...rest })}` : messageString;
|
|
69
|
+
}
|
|
70
|
+
return messageString;
|
|
71
|
+
}
|
|
72
|
+
getName() {
|
|
73
|
+
return this.name;
|
|
74
|
+
}
|
|
75
|
+
getType() {
|
|
76
|
+
return 'simple';
|
|
77
|
+
}
|
|
78
|
+
setLoggerProps(props) {
|
|
79
|
+
this.level = props?.level ?? this.level;
|
|
80
|
+
this.json = props?.json ?? this.json;
|
|
81
|
+
this.color = props?.color ?? this.color;
|
|
82
|
+
this.silent = props?.silent ?? this.silent;
|
|
83
|
+
this.timestamp = props?.timestamp ?? this.timestamp;
|
|
84
|
+
this.numericLevel = logLevels[this.level].numericLevel;
|
|
85
|
+
}
|
|
86
|
+
log(level, message, ...rest) {
|
|
87
|
+
if (!this.silent && logLevels[level].numericLevel <= this.numericLevel) {
|
|
88
|
+
console.log(this.stringifyLogRecord(level, message, ...rest));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
fatal(message, ...rest) {
|
|
92
|
+
this.log('fatal', message, ...rest);
|
|
93
|
+
}
|
|
94
|
+
error(message, ...rest) {
|
|
95
|
+
this.log('error', message, ...rest);
|
|
96
|
+
}
|
|
97
|
+
warn(message, ...rest) {
|
|
98
|
+
this.log('warn', message, ...rest);
|
|
99
|
+
}
|
|
100
|
+
info(message, ...rest) {
|
|
101
|
+
this.log('info', message, ...rest);
|
|
102
|
+
}
|
|
103
|
+
debug(message, ...rest) {
|
|
104
|
+
this.log('debug', message, ...rest);
|
|
105
|
+
}
|
|
106
|
+
trace(message, ...rest) {
|
|
107
|
+
this.log('trace', message, ...rest);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export function createSimpleLogger(props) {
|
|
111
|
+
return new SimpleLogger(props);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlLWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zaW1wbGUtbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDhCQUE4QjtBQUU5QiwrQkFBK0I7QUFDL0IsT0FBTyxLQUFnQixNQUFNLE9BQU8sQ0FBQztBQVVyQyxNQUFNLFNBQVMsR0FBa0U7SUFDL0UsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxPQUFPO0tBQ3pCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHO0tBQ3JCO0lBQ0QsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxNQUFNO0tBQ3hCO0lBQ0QsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLO0tBQ3ZCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLO0tBQ3ZCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO0tBQ3RCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLElBQUksQ0FBUztJQUNiLEtBQUssQ0FBUztJQUNkLElBQUksQ0FBVTtJQUNkLEtBQUssQ0FBVTtJQUNmLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQVU7SUFFWCxZQUFZLENBQVM7SUFFN0IsWUFBWSxLQUFtQjtRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUM7UUFDckMs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LENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBZSxFQUFFLEdBQUcsSUFBNEM7UUFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQW1CO0lBQ3BELE9BQU8sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoQykgMjAyNSBUaW0gSGFoblxuXG4vLyBpbXBvcnQgeyBEYXRlIH0gZnJvbSAnZGF0ZSc7XG5pbXBvcnQgY2hhbGssIHsgQ2hhbGsgfSBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB7XG4gIElMb2dnZXIsXG4gIExvZ2dlclR5cGUsXG4gIExvZ2dlckxldmVsLFxuICBMb2dnZXJQcm9wcyxcbiAgTG9nZ2VyU2V0TG9nZ2VyUHJvcHMsXG59IGZyb20gJy4vbG9nZ2VyLXR5cGVzLmpzJztcblxuY29uc3QgbG9nTGV2ZWxzOiB7IFtrZXk6IHN0cmluZ106IHsgbnVtZXJpY0xldmVsOiBudW1iZXI7IGNvbG9yaXplcjogQ2hhbGsgfSB9ID0ge1xuICBmYXRhbDoge1xuICAgIG51bWVyaWNMZXZlbDogMTAsXG4gICAgY29sb3JpemVyOiBjaGFsay5tYWdlbnRhLFxuICB9LFxuICBlcnJvcjoge1xuICAgIG51bWVyaWNMZXZlbDogMjAsXG4gICAgY29sb3JpemVyOiBjaGFsay5yZWQsXG4gIH0sXG4gIHdhcm46IHtcbiAgICBudW1lcmljTGV2ZWw6IDMwLFxuICAgIGNvbG9yaXplcjogY2hhbGsueWVsbG93LFxuICB9LFxuICBpbmZvOiB7XG4gICAgbnVtZXJpY0xldmVsOiA0MCxcbiAgICBjb2xvcml6ZXI6IGNoYWxrLmdyZWVuLFxuICB9LFxuICBkZWJ1Zzoge1xuICAgIG51bWVyaWNMZXZlbDogNTAsXG4gICAgY29sb3JpemVyOiBjaGFsay53aGl0ZSxcbiAgfSxcbiAgdHJhY2U6IHtcbiAgICBudW1lcmljTGV2ZWw6IDYwLFxuICAgIGNvbG9yaXplcjogY2hhbGsuZ3JheSxcbiAgfSxcbn07XG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVMb2dnZXIgaW1wbGVtZW50cyBJTG9nZ2VyIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBqc29uOiBib29sZWFuO1xuICBjb2xvcjogYm9vbGVhbjtcbiAgc2lsZW50OiBib29sZWFuO1xuICB0aW1lc3RhbXA6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBudW1lcmljTGV2ZWw6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcz86IExvZ2dlclByb3BzKSB7XG4gICAgdGhpcy5uYW1lID0gcHJvcHM/Lm5hbWUgPz8gJ2RlZmF1bHQnO1xuICAgIHRoaXMubGV2ZWwgPSBwcm9wcz8ubGV2ZWwgPz8gJ2Vycm9yJztcbiAgICB0aGlzLmpzb24gPSBwcm9wcz8uanNvbiA/PyB0cnVlO1xuICAgIHRoaXMuY29sb3IgPSBwcm9wcz8uY29sb3IgPz8gZmFsc2U7XG4gICAgdGhpcy5zaWxlbnQgPSBwcm9wcz8uc2lsZW50ID8/IGZhbHNlO1xuICAgIHRoaXMudGltZXN0YW1wID0gcHJvcHM/LnRpbWVzdGFtcCA/PyB0cnVlO1xuXG4gICAgdGhpcy5udW1lcmljTGV2ZWwgPSBsb2dMZXZlbHNbdGhpcy5sZXZlbF0ubnVtZXJpY0xldmVsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdHJpbmdpZnlMb2dSZWNvcmQoXG4gICAgbGV2ZWw6IExvZ2dlckxldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXVxuICApOiBzdHJpbmcge1xuICAgIGxldCBtZXNzYWdlU3RyaW5nID0gJyc7XG5cbiAgICBpZiAodGhpcy5qc29uKSB7XG4gICAgICBtZXNzYWdlU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBsZXZlbDogbGV2ZWwsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoRGF0ZS5ub3coKSkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICAuLi5yZXN0LFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1lc3NhZ2VTdHJpbmcgPSBtZXNzYWdlU3RyaW5nICsgdGhpcy50aW1lc3RhbXAgPyAnWycgKyBuZXcgRGF0ZShEYXRlLm5vdygpKS50b0lTT1N0cmluZygpIDogXCJbXCI7XG5cbiAgICAgIG1lc3NhZ2VTdHJpbmcgPVxuICAgICAgICBtZXNzYWdlU3RyaW5nICsgKHRoaXMudGltZXN0YW1wID8gYFske25ldyBEYXRlKERhdGUubm93KCkpLnRvSVNPU3RyaW5nKCl9IGAgOiAnWycpO1xuICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcgKyAodGhpcy5uYW1lICE9PSAnZGVmYXVsdCcgPyBgJHt0aGlzLm5hbWV9IGAgOiAnJyk7XG4gICAgICBtZXNzYWdlU3RyaW5nID1cbiAgICAgICAgbWVzc2FnZVN0cmluZyArIGAoJHt0aGlzLmNvbG9yID8gbG9nTGV2ZWxzW2xldmVsXS5jb2xvcml6ZXIobGV2ZWwpIDogbGV2ZWx9KV1gO1xuICAgICAgbWVzc2FnZVN0cmluZyA9XG4gICAgICAgIG1lc3NhZ2VTdHJpbmcgKyBgICR7dGhpcy5jb2xvciA/IGxvZ0xldmVsc1tsZXZlbF0uY29sb3JpemVyKG1lc3NhZ2UpIDogbWVzc2FnZX1gO1xuICAgICAgbWVzc2FnZVN0cmluZyA9XG4gICAgICAgIHJlc3QubGVuZ3RoID4gMCA/IG1lc3NhZ2VTdHJpbmcgKyBgICR7SlNPTi5zdHJpbmdpZnkoeyAuLi5yZXN0IH0pfWAgOiBtZXNzYWdlU3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBtZXNzYWdlU3RyaW5nO1xuICB9XG5cbiAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldFR5cGUoKTogTG9nZ2VyVHlwZSB7XG4gICAgcmV0dXJuICdzaW1wbGUnO1xuICB9XG5cbiAgcHVibGljIHNldExvZ2dlclByb3BzKHByb3BzOiBMb2dnZXJTZXRMb2dnZXJQcm9wcykge1xuICAgIHRoaXMubGV2ZWwgPSBwcm9wcz8ubGV2ZWwgPz8gdGhpcy5sZXZlbDtcbiAgICB0aGlzLmpzb24gPSBwcm9wcz8uanNvbiA/PyB0aGlzLmpzb247XG4gICAgdGhpcy5jb2xvciA9IHByb3BzPy5jb2xvciA/PyB0aGlzLmNvbG9yO1xuICAgIHRoaXMuc2lsZW50ID0gcHJvcHM/LnNpbGVudCA/PyB0aGlzLnNpbGVudDtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IHByb3BzPy50aW1lc3RhbXAgPz8gdGhpcy50aW1lc3RhbXA7XG5cbiAgICB0aGlzLm51bWVyaWNMZXZlbCA9IGxvZ0xldmVsc1t0aGlzLmxldmVsXS5udW1lcmljTGV2ZWw7XG4gIH1cblxuICBwdWJsaWMgbG9nKFxuICAgIGxldmVsOiBMb2dnZXJMZXZlbCxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW11cbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNpbGVudCAmJiBsb2dMZXZlbHNbbGV2ZWxdLm51bWVyaWNMZXZlbCA8PSB0aGlzLm51bWVyaWNMZXZlbCkge1xuICAgICAgY29uc29sZS5sb2codGhpcy5zdHJpbmdpZnlMb2dSZWNvcmQobGV2ZWwsIG1lc3NhZ2UsIC4uLnJlc3QpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZmF0YWwobWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdmYXRhbCcsIG1lc3NhZ2UsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCAuLi5yZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnd2FybicsIG1lc3NhZ2UsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIGluZm8obWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdpbmZvJywgbWVzc2FnZSwgLi4ucmVzdCk7XG4gIH1cblxuICBwdWJsaWMgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdkZWJ1ZycsIG1lc3NhZ2UsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygndHJhY2UnLCBtZXNzYWdlLCAuLi5yZXN0KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2ltcGxlTG9nZ2VyKHByb3BzPzogTG9nZ2VyUHJvcHMpOiBJTG9nZ2VyIHtcbiAgcmV0dXJuIG5ldyBTaW1wbGVMb2dnZXIocHJvcHMpO1xufVxuIl19
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Copyright (C) 2025 Tim Hahn
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
const logLevels = {
|
|
4
|
+
fatal: 0,
|
|
5
|
+
error: 1,
|
|
6
|
+
warn: 2,
|
|
7
|
+
info: 3,
|
|
8
|
+
debug: 4,
|
|
9
|
+
trace: 5,
|
|
10
|
+
};
|
|
11
|
+
const logLevelColors = {
|
|
12
|
+
fatal: 'magenta',
|
|
13
|
+
error: 'red',
|
|
14
|
+
warn: 'yellow',
|
|
15
|
+
info: 'green',
|
|
16
|
+
debug: 'white',
|
|
17
|
+
trace: 'gray',
|
|
18
|
+
};
|
|
19
|
+
class WinstonLogger {
|
|
20
|
+
logger;
|
|
21
|
+
name;
|
|
22
|
+
level;
|
|
23
|
+
json;
|
|
24
|
+
color;
|
|
25
|
+
silent;
|
|
26
|
+
timestamp;
|
|
27
|
+
// private numericLevel: number;
|
|
28
|
+
constructor(props) {
|
|
29
|
+
this.name = props?.name ?? 'default';
|
|
30
|
+
this.level = props?.level ?? 'error';
|
|
31
|
+
this.json = props?.json ?? true;
|
|
32
|
+
this.color = props?.color ?? false;
|
|
33
|
+
this.silent = props?.silent ?? false;
|
|
34
|
+
this.timestamp = props?.timestamp ?? true;
|
|
35
|
+
this.logger = winston.createLogger(); // create an initial in the constructor, overwritten by initializeWinstonLogger()
|
|
36
|
+
this.initializeWinstonLogger();
|
|
37
|
+
}
|
|
38
|
+
getName() {
|
|
39
|
+
return this.name;
|
|
40
|
+
}
|
|
41
|
+
getType() {
|
|
42
|
+
return 'winston';
|
|
43
|
+
}
|
|
44
|
+
setLoggerProps(props) {
|
|
45
|
+
this.level = props?.level ?? this.level;
|
|
46
|
+
this.json = props?.json ?? this.json;
|
|
47
|
+
this.color = props?.color ?? this.color;
|
|
48
|
+
this.silent = props?.silent ?? this.silent;
|
|
49
|
+
this.timestamp = props?.timestamp ?? this.timestamp;
|
|
50
|
+
// Replace the logger completely, using the new configuration
|
|
51
|
+
this.initializeWinstonLogger();
|
|
52
|
+
}
|
|
53
|
+
initializeWinstonLogger() {
|
|
54
|
+
winston.addColors(logLevelColors); // set colors for the custom levels defined in the logger
|
|
55
|
+
// Build the output log format specification
|
|
56
|
+
// Order of how formats are combined matters here!!
|
|
57
|
+
let format = winston.format.combine();
|
|
58
|
+
if (this.timestamp) {
|
|
59
|
+
format = winston.format.combine(format, winston.format.timestamp());
|
|
60
|
+
}
|
|
61
|
+
if (this.json) {
|
|
62
|
+
format = winston.format.combine(format, winston.format.json());
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
if (this.color) {
|
|
66
|
+
format = winston.format.combine(format, winston.format.colorize({ all: true }));
|
|
67
|
+
}
|
|
68
|
+
format = winston.format.combine(format, winston.format.printf((info) => `[${info.timestamp} ${this.name !== 'default' ? `${this.name} ` : ''}(${info.level})] ${info.message}`));
|
|
69
|
+
}
|
|
70
|
+
// Now create the logger
|
|
71
|
+
this.logger = winston.createLogger({
|
|
72
|
+
levels: logLevels,
|
|
73
|
+
level: this.level ?? 'error',
|
|
74
|
+
format: format,
|
|
75
|
+
transports: [new winston.transports.Console()],
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
log(level, message, ...rest) {
|
|
79
|
+
this.logger.log(level, message, ...rest);
|
|
80
|
+
}
|
|
81
|
+
fatal(message, ...rest) {
|
|
82
|
+
this.log('fatal', message, ...rest);
|
|
83
|
+
}
|
|
84
|
+
error(message, ...rest) {
|
|
85
|
+
this.log('error', message, ...rest);
|
|
86
|
+
}
|
|
87
|
+
warn(message, ...rest) {
|
|
88
|
+
this.log('warn', message, ...rest);
|
|
89
|
+
}
|
|
90
|
+
info(message, ...rest) {
|
|
91
|
+
this.log('info', message, ...rest);
|
|
92
|
+
}
|
|
93
|
+
debug(message, ...rest) {
|
|
94
|
+
this.log('debug', message, ...rest);
|
|
95
|
+
}
|
|
96
|
+
trace(message, ...rest) {
|
|
97
|
+
this.log('trace', message, ...rest);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export function createWinstonLogger(props) {
|
|
101
|
+
return new WinstonLogger(props);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luc3Rvbi1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd2luc3Rvbi1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsOEJBQThCO0FBRTlCLE9BQU8sT0FBTyxNQUFNLFNBQVMsQ0FBQztBQVU5QixNQUFNLFNBQVMsR0FBOEI7SUFDM0MsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDO0lBQ1AsSUFBSSxFQUFFLENBQUM7SUFDUCxLQUFLLEVBQUUsQ0FBQztJQUNSLEtBQUssRUFBRSxDQUFDO0NBQ1QsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUE4QjtJQUNoRCxLQUFLLEVBQUUsU0FBUztJQUNoQixLQUFLLEVBQUUsS0FBSztJQUNaLElBQUksRUFBRSxRQUFRO0lBQ2QsSUFBSSxFQUFFLE9BQU87SUFDYixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxNQUFNO0NBQ2QsQ0FBQztBQUVGLE1BQU0sYUFBYTtJQUNULE1BQU0sQ0FBaUI7SUFFL0IsSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFTO0lBQ2QsSUFBSSxDQUFVO0lBQ2QsS0FBSyxDQUFVO0lBQ2YsTUFBTSxDQUFVO0lBQ2hCLFNBQVMsQ0FBVTtJQUVuQixnQ0FBZ0M7SUFFaEMsWUFBWSxLQUFtQjtRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssSUFBSSxPQUFPLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLElBQUksS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUM7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QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoQykgMjAyNSBUaW0gSGFoblxuXG5pbXBvcnQgd2luc3RvbiBmcm9tICd3aW5zdG9uJztcblxuaW1wb3J0IHtcbiAgSUxvZ2dlcixcbiAgTG9nZ2VyVHlwZSxcbiAgTG9nZ2VyTGV2ZWwsXG4gIExvZ2dlclByb3BzLFxuICBMb2dnZXJTZXRMb2dnZXJQcm9wcyxcbn0gZnJvbSAnLi9sb2dnZXItdHlwZXMuanMnO1xuXG5jb25zdCBsb2dMZXZlbHM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7XG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMSxcbiAgd2FybjogMixcbiAgaW5mbzogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxufTtcblxuY29uc3QgbG9nTGV2ZWxDb2xvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gIGZhdGFsOiAnbWFnZW50YScsXG4gIGVycm9yOiAncmVkJyxcbiAgd2FybjogJ3llbGxvdycsXG4gIGluZm86ICdncmVlbicsXG4gIGRlYnVnOiAnd2hpdGUnLFxuICB0cmFjZTogJ2dyYXknLFxufTtcblxuY2xhc3MgV2luc3RvbkxvZ2dlciBpbXBsZW1lbnRzIElMb2dnZXIge1xuICBwcml2YXRlIGxvZ2dlcjogd2luc3Rvbi5Mb2dnZXI7XG5cbiAgbmFtZTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBqc29uOiBib29sZWFuO1xuICBjb2xvcjogYm9vbGVhbjtcbiAgc2lsZW50OiBib29sZWFuO1xuICB0aW1lc3RhbXA6IGJvb2xlYW47XG5cbiAgLy8gcHJpdmF0ZSBudW1lcmljTGV2ZWw6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcz86IExvZ2dlclByb3BzKSB7XG4gICAgdGhpcy5uYW1lID0gcHJvcHM/Lm5hbWUgPz8gJ2RlZmF1bHQnO1xuICAgIHRoaXMubGV2ZWwgPSBwcm9wcz8ubGV2ZWwgPz8gJ2Vycm9yJztcbiAgICB0aGlzLmpzb24gPSBwcm9wcz8uanNvbiA/PyB0cnVlO1xuICAgIHRoaXMuY29sb3IgPSBwcm9wcz8uY29sb3IgPz8gZmFsc2U7XG4gICAgdGhpcy5zaWxlbnQgPSBwcm9wcz8uc2lsZW50ID8/IGZhbHNlO1xuICAgIHRoaXMudGltZXN0YW1wID0gcHJvcHM/LnRpbWVzdGFtcCA/PyB0cnVlO1xuXG4gICAgdGhpcy5sb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcigpOyAvLyBjcmVhdGUgYW4gaW5pdGlhbCBpbiB0aGUgY29uc3RydWN0b3IsIG92ZXJ3cml0dGVuIGJ5IGluaXRpYWxpemVXaW5zdG9uTG9nZ2VyKClcbiAgICB0aGlzLmluaXRpYWxpemVXaW5zdG9uTG9nZ2VyKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xuICB9XG5cbiAgcHVibGljIGdldFR5cGUoKTogTG9nZ2VyVHlwZSB7XG4gICAgcmV0dXJuICd3aW5zdG9uJztcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2dnZXJQcm9wcyhwcm9wczogTG9nZ2VyU2V0TG9nZ2VyUHJvcHMpIHtcbiAgICB0aGlzLmxldmVsID0gcHJvcHM/LmxldmVsID8/IHRoaXMubGV2ZWw7XG4gICAgdGhpcy5qc29uID0gcHJvcHM/Lmpzb24gPz8gdGhpcy5qc29uO1xuICAgIHRoaXMuY29sb3IgPSBwcm9wcz8uY29sb3IgPz8gdGhpcy5jb2xvcjtcbiAgICB0aGlzLnNpbGVudCA9IHByb3BzPy5zaWxlbnQgPz8gdGhpcy5zaWxlbnQ7XG4gICAgdGhpcy50aW1lc3RhbXAgPSBwcm9wcz8udGltZXN0YW1wID8/IHRoaXMudGltZXN0YW1wO1xuXG4gICAgLy8gUmVwbGFjZSB0aGUgbG9nZ2VyIGNvbXBsZXRlbHksIHVzaW5nIHRoZSBuZXcgY29uZmlndXJhdGlvblxuICAgIHRoaXMuaW5pdGlhbGl6ZVdpbnN0b25Mb2dnZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVdpbnN0b25Mb2dnZXIoKSB7XG4gICAgd2luc3Rvbi5hZGRDb2xvcnMobG9nTGV2ZWxDb2xvcnMpOyAvLyBzZXQgY29sb3JzIGZvciB0aGUgY3VzdG9tIGxldmVscyBkZWZpbmVkIGluIHRoZSBsb2dnZXJcblxuICAgIC8vIEJ1aWxkIHRoZSBvdXRwdXQgbG9nIGZvcm1hdCBzcGVjaWZpY2F0aW9uXG4gICAgLy8gT3JkZXIgb2YgaG93IGZvcm1hdHMgYXJlIGNvbWJpbmVkIG1hdHRlcnMgaGVyZSEhXG4gICAgbGV0IGZvcm1hdDogd2luc3Rvbi5Mb2dmb3JtLkZvcm1hdCA9IHdpbnN0b24uZm9ybWF0LmNvbWJpbmUoKTtcblxuICAgIGlmICh0aGlzLnRpbWVzdGFtcCkge1xuICAgICAgZm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQuY29tYmluZShmb3JtYXQsIHdpbnN0b24uZm9ybWF0LnRpbWVzdGFtcCgpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuanNvbikge1xuICAgICAgZm9ybWF0ID0gd2luc3Rvbi5mb3JtYXQuY29tYmluZShmb3JtYXQsIHdpbnN0b24uZm9ybWF0Lmpzb24oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmNvbG9yKSB7XG4gICAgICAgIGZvcm1hdCA9IHdpbnN0b24uZm9ybWF0LmNvbWJpbmUoZm9ybWF0LCB3aW5zdG9uLmZvcm1hdC5jb2xvcml6ZSh7IGFsbDogdHJ1ZSB9KSk7XG4gICAgICB9XG4gICAgICBmb3JtYXQgPSB3aW5zdG9uLmZvcm1hdC5jb21iaW5lKFxuICAgICAgICBmb3JtYXQsXG4gICAgICAgIHdpbnN0b24uZm9ybWF0LnByaW50ZihcbiAgICAgICAgICAoaW5mbykgPT5cbiAgICAgICAgICAgIGBbJHtpbmZvLnRpbWVzdGFtcCBhcyBzdHJpbmd9ICR7dGhpcy5uYW1lICE9PSAnZGVmYXVsdCcgPyBgJHt0aGlzLm5hbWV9IGAgOiAnJ30oJHtpbmZvLmxldmVsfSldICR7aW5mby5tZXNzYWdlIGFzIHN0cmluZ31gLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBOb3cgY3JlYXRlIHRoZSBsb2dnZXJcblxuICAgIHRoaXMubG9nZ2VyID0gd2luc3Rvbi5jcmVhdGVMb2dnZXIoe1xuICAgICAgbGV2ZWxzOiBsb2dMZXZlbHMsXG4gICAgICBsZXZlbDogdGhpcy5sZXZlbCA/PyAnZXJyb3InLFxuICAgICAgZm9ybWF0OiBmb3JtYXQsXG4gICAgICB0cmFuc3BvcnRzOiBbbmV3IHdpbnN0b24udHJhbnNwb3J0cy5Db25zb2xlKCldLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvZyhcbiAgICBsZXZlbDogTG9nZ2VyTGV2ZWwsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIC4uLnJlc3Q6IChzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgb2JqZWN0KVtdXG4gICk6IHZvaWQge1xuICAgIHRoaXMubG9nZ2VyLmxvZyhsZXZlbCwgbWVzc2FnZSwgLi4ucmVzdCk7XG4gIH1cblxuICBwdWJsaWMgZmF0YWwobWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdmYXRhbCcsIG1lc3NhZ2UsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnZXJyb3InLCBtZXNzYWdlLCAuLi5yZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygnd2FybicsIG1lc3NhZ2UsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIGluZm8obWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdpbmZvJywgbWVzc2FnZSwgLi4ucmVzdCk7XG4gIH1cblxuICBwdWJsaWMgZGVidWcobWVzc2FnZTogc3RyaW5nLCAuLi5yZXN0OiAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG9iamVjdClbXSk6IHZvaWQge1xuICAgIHRoaXMubG9nKCdkZWJ1ZycsIG1lc3NhZ2UsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIHRyYWNlKG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogKHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBvYmplY3QpW10pOiB2b2lkIHtcbiAgICB0aGlzLmxvZygndHJhY2UnLCBtZXNzYWdlLCAuLi5yZXN0KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV2luc3RvbkxvZ2dlcihwcm9wcz86IExvZ2dlclByb3BzKTogSUxvZ2dlciB7XG4gIHJldHVybiBuZXcgV2luc3RvbkxvZ2dlcihwcm9wcyk7XG59XG4iXX0=
|
package/package.json
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ncfour-us/logging",
|
|
3
|
+
"repository": {
|
|
4
|
+
"type": "git",
|
|
5
|
+
"url": "https://github.com/ncfour-us/logging.git"
|
|
6
|
+
},
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "Tim Hahn",
|
|
9
|
+
"email": "hahntj@gmail.com",
|
|
10
|
+
"organization": false
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@eslint/compat": "^2.1.0",
|
|
14
|
+
"@eslint/eslintrc": "^3.3.5",
|
|
15
|
+
"@eslint/js": "^9.39.4",
|
|
16
|
+
"@jest/globals": "^29.7.0",
|
|
17
|
+
"@ncfour-us/projen-utils": "^0.1.9",
|
|
18
|
+
"@stylistic/eslint-plugin": "^5.10.0",
|
|
19
|
+
"@types/jest": "^29.5.14",
|
|
20
|
+
"@types/node": "^24",
|
|
21
|
+
"@typescript-eslint/eslint-plugin": "^8.59.4",
|
|
22
|
+
"@typescript-eslint/parser": "^8.59.4",
|
|
23
|
+
"commit-and-tag-version": "^12",
|
|
24
|
+
"constructs": "^10.0.0",
|
|
25
|
+
"eslint": "^9.39.4",
|
|
26
|
+
"eslint-import-resolver-typescript": "^3.10.1",
|
|
27
|
+
"eslint-plugin-import": "^2.32.0",
|
|
28
|
+
"globals": "^14.0.0",
|
|
29
|
+
"jest": "^29.7.0",
|
|
30
|
+
"jest-junit": "^17",
|
|
31
|
+
"jiti": "^2.7.0",
|
|
32
|
+
"prettier": "^3.8.3",
|
|
33
|
+
"projen": "^0.99.70",
|
|
34
|
+
"ts-jest": "^29.4.11",
|
|
35
|
+
"ts-node": "^10.9.2",
|
|
36
|
+
"tsx": "^4.22.3",
|
|
37
|
+
"typescript": "^5.9.3"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"chalk": "^4.1.2",
|
|
41
|
+
"winston": "^3.19.0"
|
|
42
|
+
},
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">= 24.0.0"
|
|
45
|
+
},
|
|
46
|
+
"devEngines": {
|
|
47
|
+
"packageManager": {
|
|
48
|
+
"name": "pnpm",
|
|
49
|
+
"version": ">=10",
|
|
50
|
+
"onFail": "ignore"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"main": "lib/index.js",
|
|
54
|
+
"license": "MIT",
|
|
55
|
+
"version": "0.0.8",
|
|
56
|
+
"jest": {
|
|
57
|
+
"coverageProvider": "v8",
|
|
58
|
+
"extensionsToTreatAsEsm": [
|
|
59
|
+
".ts"
|
|
60
|
+
],
|
|
61
|
+
"moduleNameMapper": {
|
|
62
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
63
|
+
},
|
|
64
|
+
"transform": {
|
|
65
|
+
"^.+\\.(mt|t|cj|j)s$": [
|
|
66
|
+
"ts-jest",
|
|
67
|
+
{
|
|
68
|
+
"useESM": true,
|
|
69
|
+
"tsconfig": "tsconfig.dev.json"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"testMatch": [
|
|
74
|
+
"<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
|
|
75
|
+
"<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)",
|
|
76
|
+
"<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)",
|
|
77
|
+
"<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"
|
|
78
|
+
],
|
|
79
|
+
"clearMocks": true,
|
|
80
|
+
"collectCoverage": true,
|
|
81
|
+
"coverageReporters": [
|
|
82
|
+
"json",
|
|
83
|
+
"lcov",
|
|
84
|
+
"clover",
|
|
85
|
+
"cobertura",
|
|
86
|
+
"text"
|
|
87
|
+
],
|
|
88
|
+
"coverageDirectory": "coverage",
|
|
89
|
+
"coveragePathIgnorePatterns": [
|
|
90
|
+
"/node_modules/"
|
|
91
|
+
],
|
|
92
|
+
"testPathIgnorePatterns": [
|
|
93
|
+
"/node_modules/"
|
|
94
|
+
],
|
|
95
|
+
"watchPathIgnorePatterns": [
|
|
96
|
+
"/node_modules/"
|
|
97
|
+
],
|
|
98
|
+
"reporters": [
|
|
99
|
+
"default",
|
|
100
|
+
[
|
|
101
|
+
"jest-junit",
|
|
102
|
+
{
|
|
103
|
+
"outputDirectory": "test-reports"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
"types": "lib/index.d.ts",
|
|
109
|
+
"type": "module",
|
|
110
|
+
"exports": {
|
|
111
|
+
".": "./lib/logger.js"
|
|
112
|
+
},
|
|
113
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"pnpm exec projen\".",
|
|
114
|
+
"scripts": {
|
|
115
|
+
"build": "projen build",
|
|
116
|
+
"bump": "projen bump",
|
|
117
|
+
"clobber": "projen clobber",
|
|
118
|
+
"compile": "projen compile",
|
|
119
|
+
"default": "projen default",
|
|
120
|
+
"eject": "projen eject",
|
|
121
|
+
"eslint": "projen eslint",
|
|
122
|
+
"package": "projen package",
|
|
123
|
+
"post-compile": "projen post-compile",
|
|
124
|
+
"post-upgrade": "projen post-upgrade",
|
|
125
|
+
"pre-compile": "projen pre-compile",
|
|
126
|
+
"publish:git": "projen publish:git",
|
|
127
|
+
"publish:local": "projen publish:local",
|
|
128
|
+
"publish:npm": "projen publish:npm",
|
|
129
|
+
"release": "projen release",
|
|
130
|
+
"test": "projen test",
|
|
131
|
+
"test:watch": "projen test:watch",
|
|
132
|
+
"unbump": "projen unbump",
|
|
133
|
+
"upgrade": "projen upgrade",
|
|
134
|
+
"watch": "projen watch",
|
|
135
|
+
"projen": "projen"
|
|
136
|
+
}
|
|
137
|
+
}
|