@creejs/commons-logging 2.0.0 → 2.0.2
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/dist/cjs/index-dev.cjs +1450 -0
- package/dist/cjs/index-dev.cjs.map +1 -0
- package/dist/cjs/index-min.cjs +2 -0
- package/dist/cjs/index-min.cjs.map +1 -0
- package/dist/esm/index-dev.js +1424 -0
- package/dist/esm/index-dev.js.map +1 -0
- package/dist/esm/index-min.js +2 -0
- package/dist/esm/index-min.js.map +1 -0
- package/dist/umd/index.dev.js +1456 -0
- package/dist/umd/index.dev.js.map +1 -0
- package/dist/umd/index.min.js +2 -0
- package/dist/umd/index.min.js.map +1 -0
- package/index.js +2 -3
- package/package.json +38 -7
- package/types/console/console-log-factory.d.ts +2 -3
- package/types/console/console-log-provider.d.ts +3 -4
- package/types/console/console-logger.d.ts +2 -3
- package/types/console/index.d.ts +2 -2
- package/types/index.d.ts +33 -8
- package/types/log-config.d.ts +25 -2
- package/types/log-factory.d.ts +2 -3
- package/types/log-level.d.ts +21 -8
- package/types/log4js/index.d.ts +2 -2
- package/types/log4js/log4js-6x-config.d.ts +13 -10
- package/types/log4js/log4js-factory.d.ts +2 -3
- package/types/log4js/log4js-logger.d.ts +2 -3
- package/types/log4js/log4js-provider.d.ts +3 -4
- package/types/logger.d.ts +2 -3
- package/types/provider-type.d.ts +5 -0
- package/types/provider.d.ts +2 -3
- package/lib/console/console-log-factory.js +0 -76
- package/lib/console/console-log-provider.js +0 -29
- package/lib/console/console-logger.js +0 -88
- package/lib/console/index.js +0 -11
- package/lib/index.js +0 -259
- package/lib/log-config.js +0 -163
- package/lib/log-factory.js +0 -88
- package/lib/log-level.js +0 -169
- package/lib/log4js/index.js +0 -11
- package/lib/log4js/log4js-6x-config.js +0 -12
- package/lib/log4js/log4js-factory.js +0 -90
- package/lib/log4js/log4js-logger.js +0 -111
- package/lib/log4js/log4js-provider.js +0 -35
- package/lib/logger.js +0 -285
- package/lib/provider-type.js +0 -22
- package/lib/provider.js +0 -53
- package/types/console-logger.d.ts +0 -7
- package/types/log4js-logger.d.ts +0 -13
- package/types/logging-level.d.ts +0 -41
package/types/log-factory.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export = LogFactory;
|
|
2
1
|
/**
|
|
3
2
|
* @abstract
|
|
4
3
|
*/
|
|
5
|
-
|
|
4
|
+
export default class LogFactory {
|
|
6
5
|
/**
|
|
7
6
|
* Checks if a value resembles a LogFactory by verifying it has required methods.
|
|
8
7
|
* @param {*} value - The value to check
|
|
@@ -52,4 +51,4 @@ declare class LogFactory {
|
|
|
52
51
|
*/
|
|
53
52
|
createLogger(loggerName: string): Logger;
|
|
54
53
|
}
|
|
55
|
-
import Logger
|
|
54
|
+
import Logger from "./logger.js";
|
package/types/log-level.d.ts
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
export default LogLevel;
|
|
2
|
+
declare namespace LogLevel {
|
|
3
|
+
export { Name };
|
|
4
|
+
export { Level };
|
|
5
|
+
export { DefaultLevel };
|
|
6
|
+
export { hasLevel };
|
|
7
|
+
export { hasName };
|
|
8
|
+
export { assertLevel };
|
|
9
|
+
export { Name as LevelName };
|
|
10
|
+
export { Level as LevelValue };
|
|
11
|
+
export { value2Name };
|
|
12
|
+
export { name2Value };
|
|
13
|
+
}
|
|
1
14
|
/**
|
|
2
15
|
* *
|
|
3
16
|
*/
|
|
@@ -16,21 +29,21 @@ export namespace Name {
|
|
|
16
29
|
*/
|
|
17
30
|
export type Level = number;
|
|
18
31
|
export namespace Level {
|
|
19
|
-
|
|
32
|
+
const OFF_1: number;
|
|
20
33
|
export { OFF_1 as OFF };
|
|
21
|
-
|
|
34
|
+
const FATAL_1: number;
|
|
22
35
|
export { FATAL_1 as FATAL };
|
|
23
|
-
|
|
36
|
+
const ERROR_1: number;
|
|
24
37
|
export { ERROR_1 as ERROR };
|
|
25
|
-
|
|
38
|
+
const WARN_1: number;
|
|
26
39
|
export { WARN_1 as WARN };
|
|
27
|
-
|
|
40
|
+
const INFO_1: number;
|
|
28
41
|
export { INFO_1 as INFO };
|
|
29
|
-
|
|
42
|
+
const DEBUG_1: number;
|
|
30
43
|
export { DEBUG_1 as DEBUG };
|
|
31
|
-
|
|
44
|
+
const TRACE_1: number;
|
|
32
45
|
export { TRACE_1 as TRACE };
|
|
33
|
-
export
|
|
46
|
+
export const ALL: number;
|
|
34
47
|
}
|
|
35
48
|
/**
|
|
36
49
|
* The default logging level (ERROR)
|
package/types/log4js/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
1
|
+
export default log4jsProvider;
|
|
2
2
|
declare const log4jsProvider: Log4jsProvider;
|
|
3
|
-
import Log4jsProvider
|
|
3
|
+
import Log4jsProvider from "./log4js-provider.js";
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export default DefaultConfig;
|
|
2
|
+
export namespace DefaultConfig {
|
|
3
|
+
namespace appenders {
|
|
4
|
+
namespace out {
|
|
5
|
+
const type: string;
|
|
6
|
+
}
|
|
4
7
|
}
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
namespace categories {
|
|
9
|
+
namespace _default {
|
|
10
|
+
const appenders_1: string[];
|
|
11
|
+
export { appenders_1 as appenders };
|
|
12
|
+
export const level: string;
|
|
13
|
+
}
|
|
14
|
+
export { _default as default };
|
|
11
15
|
}
|
|
12
|
-
export { _default as default };
|
|
13
16
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
export = Log4jsFactory;
|
|
2
1
|
/**
|
|
3
2
|
* Use log4js as the logging provider.
|
|
4
3
|
*/
|
|
5
|
-
|
|
4
|
+
export default class Log4jsFactory extends LogFactory {
|
|
6
5
|
/**
|
|
7
6
|
* the log4js module instance.
|
|
8
7
|
* @returns {{}} The log4js module instance.
|
|
@@ -14,4 +13,4 @@ declare class Log4jsFactory extends LogFactory {
|
|
|
14
13
|
*/
|
|
15
14
|
override init(): void;
|
|
16
15
|
}
|
|
17
|
-
import LogFactory
|
|
16
|
+
import LogFactory from "../log-factory.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
declare class Log4jsLogger extends Logger {
|
|
1
|
+
export default class Log4jsLogger extends Logger {
|
|
3
2
|
/**
|
|
4
3
|
* Creates a new ConsoleLogger instance.
|
|
5
4
|
* @constructor
|
|
@@ -10,4 +9,4 @@ declare class Log4jsLogger extends Logger {
|
|
|
10
9
|
_level: any;
|
|
11
10
|
_logger: any;
|
|
12
11
|
}
|
|
13
|
-
import Logger
|
|
12
|
+
import Logger from "../logger.js";
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
declare class Log4jsProvider extends Provider {
|
|
1
|
+
export default class Log4jsProvider extends Provider {
|
|
3
2
|
/**
|
|
4
3
|
* Creates a new Provider instance.
|
|
5
4
|
* @param {*} libraryModule - The library module to be used.
|
|
@@ -9,5 +8,5 @@ declare class Log4jsProvider extends Provider {
|
|
|
9
8
|
*/
|
|
10
9
|
override createLogFactory(libraryModule: any, setting: any): Log4jsFactory;
|
|
11
10
|
}
|
|
12
|
-
import Provider
|
|
13
|
-
import Log4jsFactory
|
|
11
|
+
import Provider from "../provider.js";
|
|
12
|
+
import Log4jsFactory from "./log4js-factory.js";
|
package/types/logger.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export = Logger;
|
|
2
1
|
/**
|
|
3
2
|
* Abstract Logger Class of All Logger
|
|
4
3
|
* @abstract
|
|
5
4
|
*/
|
|
6
|
-
|
|
5
|
+
export default class Logger {
|
|
7
6
|
/**
|
|
8
7
|
* Creates a new Logger instance.
|
|
9
8
|
* @constructor
|
|
@@ -11,7 +10,7 @@ declare class Logger {
|
|
|
11
10
|
* @param {*} [nativeLogger]
|
|
12
11
|
* @param {number} [level] - The logging level, default is Level.ERROR=1
|
|
13
12
|
*/
|
|
14
|
-
constructor(name: string, nativeLogger?: any, level?: number);
|
|
13
|
+
constructor(name: string, nativeLogger?: any, level?: number | undefined);
|
|
15
14
|
_name: string;
|
|
16
15
|
_nativeLogger: any;
|
|
17
16
|
_level: number;
|
package/types/provider-type.d.ts
CHANGED
package/types/provider.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export = Provider;
|
|
2
1
|
/**
|
|
3
2
|
* A interface that All Provider module must export
|
|
4
3
|
* @interface
|
|
5
4
|
*/
|
|
6
|
-
|
|
5
|
+
export default class Provider {
|
|
7
6
|
/**
|
|
8
7
|
* Checks if a value resembles a logging provider by verifying it has required methods.
|
|
9
8
|
* @param {*} value - The value to check
|
|
@@ -29,4 +28,4 @@ declare class Provider {
|
|
|
29
28
|
*/
|
|
30
29
|
createLogFactory(nativeLib?: any, setting?: any): LogFactory;
|
|
31
30
|
}
|
|
32
|
-
import LogFactory
|
|
31
|
+
import LogFactory from "./log-factory.js";
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
// owned
|
|
4
|
-
// eslint-disable-next-line no-unused-vars
|
|
5
|
-
const Logger = require('../logger')
|
|
6
|
-
// eslint-disable-next-line no-unused-vars
|
|
7
|
-
const { Level, assertLevel } = require('../log-level')
|
|
8
|
-
const LogFactory = require('../log-factory')
|
|
9
|
-
const ConsoleLogger = require('./console-logger')
|
|
10
|
-
const LogConfig = require('../log-config')
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Use Console as the native library
|
|
14
|
-
*/
|
|
15
|
-
class ConsoleLogFactory extends LogFactory {
|
|
16
|
-
/**
|
|
17
|
-
* the underlying "Console" Object.
|
|
18
|
-
* @returns {{}}
|
|
19
|
-
*/
|
|
20
|
-
get console () {
|
|
21
|
-
return this._libraryModule // it's the embedded "console" object
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Gets the current logging settings
|
|
26
|
-
* @returns {{level:number}} The logging settings object containing the current log level.
|
|
27
|
-
*/
|
|
28
|
-
get setting () {
|
|
29
|
-
if (this._setting == null) {
|
|
30
|
-
this._setting = {
|
|
31
|
-
level: LogConfig.currentLevel
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// @ts-ignore
|
|
35
|
-
return this._setting
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Update factory's Log Level
|
|
40
|
-
* 1. Only Provider knows how to update
|
|
41
|
-
* @param {number} level - The log level to set, see {@link LogLevel.Level}
|
|
42
|
-
* @returns {void}
|
|
43
|
-
* @throws {Error} Throws an error as this method is Not Impled Yet.
|
|
44
|
-
* @abstract
|
|
45
|
-
*/
|
|
46
|
-
setLevel (level) {
|
|
47
|
-
assertLevel(level)
|
|
48
|
-
if (level !== this.setting.level) {
|
|
49
|
-
this.setting.level = level
|
|
50
|
-
}
|
|
51
|
-
// init again
|
|
52
|
-
this.init()
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Initializes the log4js provider by configuring it with the provided settings.
|
|
57
|
-
* @async
|
|
58
|
-
* @override
|
|
59
|
-
* @returns {Promise<void>|void}
|
|
60
|
-
*/
|
|
61
|
-
init () {
|
|
62
|
-
// do nothing
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Creates a new logger instance with the specified name and log level.
|
|
67
|
-
* @param {string} loggerName - The name of the logger to create.
|
|
68
|
-
* @returns {Logger} A new logger instance configured with the given name and level.
|
|
69
|
-
* @override
|
|
70
|
-
*/
|
|
71
|
-
createLogger (loggerName) {
|
|
72
|
-
return new ConsoleLogger(loggerName, this.console, this.setting.level)
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
module.exports = ConsoleLogFactory
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const ProviderType = require('../provider-type')
|
|
4
|
-
const Provider = require('../provider')
|
|
5
|
-
const ConsoleLogFactory = require('./console-log-factory')
|
|
6
|
-
|
|
7
|
-
class ConsoleProvider extends Provider {
|
|
8
|
-
/**
|
|
9
|
-
* Gets the provider type (Console).
|
|
10
|
-
* @returns {string} "CONSOLE"
|
|
11
|
-
* @override
|
|
12
|
-
*/
|
|
13
|
-
getType () {
|
|
14
|
-
return ProviderType.Console
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Creates a new Provider instance.
|
|
19
|
-
* @param {Object} libraryModule - The library module to be used.
|
|
20
|
-
* @param {Object} setting - Configuration settings for the provider.
|
|
21
|
-
* @returns {ConsoleLogFactory} A new instance of ConsoleProvider.
|
|
22
|
-
* @override
|
|
23
|
-
*/
|
|
24
|
-
createLogFactory (libraryModule, setting) {
|
|
25
|
-
return new ConsoleLogFactory(libraryModule, setting)
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
module.exports = ConsoleProvider
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
// 3rd
|
|
4
|
-
// internal
|
|
5
|
-
// owned
|
|
6
|
-
const Logger = require('../logger')
|
|
7
|
-
// module vars
|
|
8
|
-
/**
|
|
9
|
-
* A Simple Implementation of the Logger interface that logs to the console.
|
|
10
|
-
*/
|
|
11
|
-
class ConsoleLogger extends Logger {
|
|
12
|
-
/**
|
|
13
|
-
* Creates a ConsoleLogger instance.
|
|
14
|
-
* @constructor
|
|
15
|
-
* @param {string} name - The logger name.
|
|
16
|
-
* @param {*} nativeLogger - The native console object to use for logging.
|
|
17
|
-
* @param {number} level - The initial log level.
|
|
18
|
-
*/
|
|
19
|
-
constructor (name, nativeLogger, level) {
|
|
20
|
-
super(name, nativeLogger, level)
|
|
21
|
-
/**
|
|
22
|
-
* @type {{error:function, warn:function, debug:function, log:function, info:function, trace:function}}
|
|
23
|
-
*/
|
|
24
|
-
this.console = nativeLogger
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* For ConsoleLogger, Nothing to do
|
|
29
|
-
* @param {number} level
|
|
30
|
-
* @override
|
|
31
|
-
* @protectd
|
|
32
|
-
*/
|
|
33
|
-
_setLevel (level) {
|
|
34
|
-
// do nothing
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Logs a fatal error message with timestamp and logger name.
|
|
39
|
-
* Only outputs if fatal logging is enabled for this logger instance.
|
|
40
|
-
* @param {...any} args
|
|
41
|
-
*/
|
|
42
|
-
_fatal (...args) {
|
|
43
|
-
this.console.error(new Date().toISOString(), this.name, '[Fatal]', ...args)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Logs an error message to the console with timestamp and logger name.
|
|
48
|
-
* Only logs if error logging is enabled for this logger instance.
|
|
49
|
-
* @param {...any} args
|
|
50
|
-
*/
|
|
51
|
-
_error (...args) {
|
|
52
|
-
this.console.error(new Date().toISOString(), this.name, '[Error]', ...args)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Logs a warning message to the console if warn logging is enabled.
|
|
57
|
-
* @param {...any} args
|
|
58
|
-
*/
|
|
59
|
-
_warn (...args) {
|
|
60
|
-
this.console.warn(new Date().toISOString(), this.name, '[Warn]', ...args)
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Logs debug messages to console if debug mode is enabled.
|
|
65
|
-
* @param {...any} args
|
|
66
|
-
*/
|
|
67
|
-
_debug (...args) {
|
|
68
|
-
this.console.debug(new Date().toISOString(), this.name, '[Debug]', ...args)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Logs an info message to the console with timestamp and logger name.
|
|
73
|
-
* @param {...any} args
|
|
74
|
-
*/
|
|
75
|
-
_info (...args) {
|
|
76
|
-
this.console.log(new Date().toISOString(), this.name, '[Info]', ...args)
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Logs a trace message with timestamp and logger name if trace logging is enabled.
|
|
81
|
-
* @param {...any} args
|
|
82
|
-
*/
|
|
83
|
-
_trace (...args) {
|
|
84
|
-
this.console.log(new Date().toISOString(), this.name, '[Trace]', ...args)
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
module.exports = ConsoleLogger
|
package/lib/console/index.js
DELETED
package/lib/index.js
DELETED
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
/**
|
|
3
|
-
* @module CommonsLogging
|
|
4
|
-
* @description Common logging library
|
|
5
|
-
*
|
|
6
|
-
* Follow the sequence to init log system: addProvider() -> use() -> configure() -> getLogger()
|
|
7
|
-
* 1. Add ability to handle the type of library
|
|
8
|
-
* * eg. after adding Log4jsProvider, we can use Log4js library
|
|
9
|
-
* 2. But we MAY NOT use it now.
|
|
10
|
-
* * call useProvider(typeName) to select which kind of LogProvider Implementation to use.
|
|
11
|
-
* * call configure(typeName, nativeLib, setting) to LogProvider Implementation
|
|
12
|
-
*/
|
|
13
|
-
// 3rd
|
|
14
|
-
// internal
|
|
15
|
-
const {
|
|
16
|
-
TypeAssert: { assertNotNil, assertString },
|
|
17
|
-
TypeUtils: { isFunction, isNil }
|
|
18
|
-
} = require('@creejs/commons-lang')
|
|
19
|
-
|
|
20
|
-
// owned
|
|
21
|
-
const LogFactory = require('./log-factory')
|
|
22
|
-
const Logger = require('./logger')
|
|
23
|
-
const ProviderType = require('./provider-type')
|
|
24
|
-
const LogLevel = require('./log-level')
|
|
25
|
-
const LogConfig = require('./log-config')
|
|
26
|
-
|
|
27
|
-
const ConsoleProvider = require('./console')
|
|
28
|
-
const Log4jsProvider = require('./log4js')
|
|
29
|
-
const Provider = require('./provider')
|
|
30
|
-
|
|
31
|
-
// module vars
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Store Created Loggers, indexed with Names
|
|
35
|
-
* @type {Map<string, Logger>}
|
|
36
|
-
* @private
|
|
37
|
-
*/
|
|
38
|
-
const name2Logger = new Map()
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* set Global logging level
|
|
42
|
-
* @param {'TRACE'|'DEBUG'|'INFO'|'WARN'|'ERROR'|'FATAL'|'OFF'|'trace'|'debug'|'info'|'warn'|'error'|'fatal'|'off'} level - The log level
|
|
43
|
-
*/
|
|
44
|
-
function setLevel (level) {
|
|
45
|
-
assertString(level)
|
|
46
|
-
const upperLevel = level.toUpperCase()
|
|
47
|
-
const levelNumber = LogLevel.name2Value(upperLevel)
|
|
48
|
-
if (levelNumber == null) {
|
|
49
|
-
throw new Error(`Invalid log level: ${level}`)
|
|
50
|
-
}
|
|
51
|
-
if (levelNumber === LogConfig.currentLevel) {
|
|
52
|
-
return // no change
|
|
53
|
-
}
|
|
54
|
-
LogConfig.currentLevel = levelNumber
|
|
55
|
-
|
|
56
|
-
// refresh existed factories
|
|
57
|
-
// @ts-ignore
|
|
58
|
-
// eslint-disable-next-line no-unused-vars
|
|
59
|
-
for (const [typeName, factory] of LogConfig.listFactories()) {
|
|
60
|
-
factory.setLevel(levelNumber)
|
|
61
|
-
}
|
|
62
|
-
// refresh existed Loggers
|
|
63
|
-
for (const logger of name2Logger.values()) {
|
|
64
|
-
if (logger.level !== levelNumber) {
|
|
65
|
-
logger.setLevel(levelNumber)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function currentProvider () {
|
|
71
|
-
return LogConfig.currentProvider
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Set the provider using currently
|
|
76
|
-
* @param {string} typeName - The type name of the logging provider to use.
|
|
77
|
-
* @returns {void}
|
|
78
|
-
* @throws {Error} If the provider name is unknown.
|
|
79
|
-
*/
|
|
80
|
-
function useProvider (typeName) {
|
|
81
|
-
assertString(typeName)
|
|
82
|
-
typeName = typeName.toUpperCase()
|
|
83
|
-
const provider = LogConfig.getProvider(typeName)
|
|
84
|
-
if (provider == null) {
|
|
85
|
-
throw new Error(`No Provider Named with: ${typeName}`)
|
|
86
|
-
}
|
|
87
|
-
LogConfig.currentProvider = typeName
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Removes and returns the provider associated with the given type name.
|
|
92
|
-
* If no provider exists for the type name, the function returns undefined.
|
|
93
|
-
*
|
|
94
|
-
* @param {string} typeName - The type name of the provider to remove.
|
|
95
|
-
* @returns {boolean} The removed provider, or undefined if not found.
|
|
96
|
-
*/
|
|
97
|
-
function removeProvider (typeName) {
|
|
98
|
-
if (typeName == null) {
|
|
99
|
-
return false
|
|
100
|
-
}
|
|
101
|
-
assertString(typeName)
|
|
102
|
-
typeName = typeName.toUpperCase()
|
|
103
|
-
return LogConfig.removeProvider(typeName)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Add a type of Provider
|
|
108
|
-
*
|
|
109
|
-
* More:
|
|
110
|
-
* 1. A Provider is a Module
|
|
111
|
-
* 2. The module must include the following functions:
|
|
112
|
-
* 1. getType() - Returns the type name of the provider.
|
|
113
|
-
* 2. createLogFactory() - Creates a new LogFactory instance.
|
|
114
|
-
* @param {Provider} provider - Logging Library Module
|
|
115
|
-
* @returns {void}
|
|
116
|
-
*/
|
|
117
|
-
function addProvider (provider) {
|
|
118
|
-
assertNotNil(provider)
|
|
119
|
-
const { getType, createLogFactory } = provider
|
|
120
|
-
if (!isFunction(getType) || !isFunction(createLogFactory)) {
|
|
121
|
-
throw new Error('Invalid Provider Module, missing getType(), createLogFactory() functions')
|
|
122
|
-
}
|
|
123
|
-
let typeName = provider.getType()
|
|
124
|
-
assertString(typeName)
|
|
125
|
-
typeName = typeName.toUpperCase()
|
|
126
|
-
LogConfig.addProvider(typeName, provider)
|
|
127
|
-
// set current provider if not set yet
|
|
128
|
-
if (isNil(currentProvider())) {
|
|
129
|
-
useProvider(typeName)
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function clearProviders () {
|
|
134
|
-
name2Logger.clear()
|
|
135
|
-
LogConfig.clear()
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* configure provider to initialize its LogFactory
|
|
140
|
-
* 1. find the LogProvider Implementation of "typeName"
|
|
141
|
-
* * if type is not supported, throw error
|
|
142
|
-
* 2. use the nativeLib and setting to initialize the LogProvider
|
|
143
|
-
* 3. create a LogFactory via teh LogProvider
|
|
144
|
-
* @param {string} typeName - The type of logging provider to configure.
|
|
145
|
-
* @param {*} [nativeLib] - The native library to use for logging.
|
|
146
|
-
* @param {*} [setting] - Configuration settings for the logging provider.
|
|
147
|
-
* @throws {Error} If the typeName is not recognized.
|
|
148
|
-
*/
|
|
149
|
-
function configureProvider (typeName, nativeLib, setting) {
|
|
150
|
-
assertString(typeName)
|
|
151
|
-
typeName = typeName.toUpperCase()
|
|
152
|
-
const provider = LogConfig.getProvider(typeName)
|
|
153
|
-
if (provider == null) {
|
|
154
|
-
throw new Error(`No Provider: ${typeName}`)
|
|
155
|
-
}
|
|
156
|
-
const factory = provider.createLogFactory(nativeLib, setting)
|
|
157
|
-
LogConfig.addFactory(typeName, factory)
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* Configures and immediately uses a logging provider with the given settings.
|
|
162
|
-
* @param {string} typeName - The type/name identifier for the provider.
|
|
163
|
-
* @param {*} nativeLib - The native library implementation to configure.
|
|
164
|
-
* @param {*} setting - Configuration settings for the provider.
|
|
165
|
-
*/
|
|
166
|
-
function configureThenUseProvider (typeName, nativeLib, setting) {
|
|
167
|
-
configureProvider(typeName, nativeLib, setting)
|
|
168
|
-
useProvider(typeName)
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Gets a logger instance for the specified logger name using the current provider.
|
|
173
|
-
* @param {string} loggerName - The name of the logger to retrieve.
|
|
174
|
-
* @returns {Logger} The logger instance.
|
|
175
|
-
* @throws {Error} If no default provider is set or if the current provider is not initialized.
|
|
176
|
-
*/
|
|
177
|
-
function getLogger (loggerName) {
|
|
178
|
-
// if logger already exists, return it
|
|
179
|
-
let logger = name2Logger.get(loggerName)
|
|
180
|
-
if (logger != null) {
|
|
181
|
-
return logger
|
|
182
|
-
}
|
|
183
|
-
// create a new logger via the current provider's LogFactory
|
|
184
|
-
const currentTypeName = currentProvider()
|
|
185
|
-
if (currentTypeName == null) {
|
|
186
|
-
throw new Error('No Default LogProvider, call useProvider(typeName)')
|
|
187
|
-
}
|
|
188
|
-
const factory = LogConfig.getFactory(currentTypeName)
|
|
189
|
-
if (factory == null) {
|
|
190
|
-
throw new Error('configureProvider(typeName, nativeLib, settting) before getting logger via Provider')
|
|
191
|
-
}
|
|
192
|
-
logger = factory.createLogger(loggerName)
|
|
193
|
-
name2Logger.set(loggerName, logger)
|
|
194
|
-
return logger
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
function initLogSystem () {
|
|
198
|
-
addProvider(Log4jsProvider)
|
|
199
|
-
// ConsoleProvider as default impl
|
|
200
|
-
addProvider(ConsoleProvider)
|
|
201
|
-
configureProvider(ProviderType.Console, console)
|
|
202
|
-
useProvider(ProviderType.Console) // Use ConsoleLogger as default
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
initLogSystem()
|
|
206
|
-
|
|
207
|
-
const CommonsLogging = {
|
|
208
|
-
Provider,
|
|
209
|
-
LogFactory,
|
|
210
|
-
Logger,
|
|
211
|
-
LogLevel,
|
|
212
|
-
ProviderType,
|
|
213
|
-
getLogger,
|
|
214
|
-
setLevel,
|
|
215
|
-
useProvider,
|
|
216
|
-
/**
|
|
217
|
-
* alias for {@link CommonsLogging.useProvider}
|
|
218
|
-
* @see {@link CommonsLogging.useProvider}
|
|
219
|
-
* @function
|
|
220
|
-
* @alias module:CommonsLogging.use
|
|
221
|
-
*/
|
|
222
|
-
use: useProvider,
|
|
223
|
-
configureProvider,
|
|
224
|
-
/**
|
|
225
|
-
* @function
|
|
226
|
-
* @alias module:CommonsLogging.confiure
|
|
227
|
-
*/
|
|
228
|
-
configure: configureProvider,
|
|
229
|
-
configureThenUseProvider,
|
|
230
|
-
/**
|
|
231
|
-
* @function
|
|
232
|
-
* @alias module:CommonsLogging.configureThenUseProvider
|
|
233
|
-
*/
|
|
234
|
-
configureThenUse: configureThenUseProvider,
|
|
235
|
-
addProvider,
|
|
236
|
-
add: addProvider,
|
|
237
|
-
clearProviders,
|
|
238
|
-
currentProvider,
|
|
239
|
-
/**
|
|
240
|
-
* @function
|
|
241
|
-
* @alias module:CommonsLogging.current
|
|
242
|
-
*/
|
|
243
|
-
current: currentProvider,
|
|
244
|
-
removeProvider,
|
|
245
|
-
/**
|
|
246
|
-
* @function
|
|
247
|
-
* @alias module:CommonsLogging.remove
|
|
248
|
-
*/
|
|
249
|
-
remove: removeProvider,
|
|
250
|
-
/**
|
|
251
|
-
* @alias module:CommonsLogging.ConsoleProvider
|
|
252
|
-
*/
|
|
253
|
-
ConsoleProvider,
|
|
254
|
-
/**
|
|
255
|
-
* @alias module:CommonsLogging.Log4jsProvider
|
|
256
|
-
*/
|
|
257
|
-
Log4jsProvider
|
|
258
|
-
}
|
|
259
|
-
module.exports = CommonsLogging
|