@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.
Files changed (49) hide show
  1. package/dist/cjs/index-dev.cjs +1450 -0
  2. package/dist/cjs/index-dev.cjs.map +1 -0
  3. package/dist/cjs/index-min.cjs +2 -0
  4. package/dist/cjs/index-min.cjs.map +1 -0
  5. package/dist/esm/index-dev.js +1424 -0
  6. package/dist/esm/index-dev.js.map +1 -0
  7. package/dist/esm/index-min.js +2 -0
  8. package/dist/esm/index-min.js.map +1 -0
  9. package/dist/umd/index.dev.js +1456 -0
  10. package/dist/umd/index.dev.js.map +1 -0
  11. package/dist/umd/index.min.js +2 -0
  12. package/dist/umd/index.min.js.map +1 -0
  13. package/index.js +2 -3
  14. package/package.json +38 -7
  15. package/types/console/console-log-factory.d.ts +2 -3
  16. package/types/console/console-log-provider.d.ts +3 -4
  17. package/types/console/console-logger.d.ts +2 -3
  18. package/types/console/index.d.ts +2 -2
  19. package/types/index.d.ts +33 -8
  20. package/types/log-config.d.ts +25 -2
  21. package/types/log-factory.d.ts +2 -3
  22. package/types/log-level.d.ts +21 -8
  23. package/types/log4js/index.d.ts +2 -2
  24. package/types/log4js/log4js-6x-config.d.ts +13 -10
  25. package/types/log4js/log4js-factory.d.ts +2 -3
  26. package/types/log4js/log4js-logger.d.ts +2 -3
  27. package/types/log4js/log4js-provider.d.ts +3 -4
  28. package/types/logger.d.ts +2 -3
  29. package/types/provider-type.d.ts +5 -0
  30. package/types/provider.d.ts +2 -3
  31. package/lib/console/console-log-factory.js +0 -76
  32. package/lib/console/console-log-provider.js +0 -29
  33. package/lib/console/console-logger.js +0 -88
  34. package/lib/console/index.js +0 -11
  35. package/lib/index.js +0 -259
  36. package/lib/log-config.js +0 -163
  37. package/lib/log-factory.js +0 -88
  38. package/lib/log-level.js +0 -169
  39. package/lib/log4js/index.js +0 -11
  40. package/lib/log4js/log4js-6x-config.js +0 -12
  41. package/lib/log4js/log4js-factory.js +0 -90
  42. package/lib/log4js/log4js-logger.js +0 -111
  43. package/lib/log4js/log4js-provider.js +0 -35
  44. package/lib/logger.js +0 -285
  45. package/lib/provider-type.js +0 -22
  46. package/lib/provider.js +0 -53
  47. package/types/console-logger.d.ts +0 -7
  48. package/types/log4js-logger.d.ts +0 -13
  49. package/types/logging-level.d.ts +0 -41
package/lib/log-config.js DELETED
@@ -1,163 +0,0 @@
1
- 'use strict'
2
- /**
3
- * @module LogConfig
4
- * @description Provide Impl of Log Configuration
5
- * @private
6
- */
7
- // internal
8
- const { TypeAssert: { assertString } } = require('@creejs/commons-lang')
9
- // owned
10
- const { DefaultLevel } = require('./log-level')
11
- // eslint-disable-next-line no-unused-vars
12
- const LogFactory = require('./log-factory')
13
- const Provider = require('./provider')
14
- /**
15
- * type name of current provider
16
- * @type {string}
17
- * @public
18
- */
19
- // @ts-ignore
20
- // eslint-disable-next-line prefer-const
21
- let currentProvider = null
22
-
23
- /**
24
- * Global logging level
25
- * @type {number}
26
- * @public
27
- */
28
- // @ts-ignore
29
- // eslint-disable-next-line prefer-const
30
- let currentLevel = DefaultLevel
31
-
32
- /**
33
- * The map of registered logging libraries
34
- * @type {Map<string,Provider>}
35
- * @private
36
- */
37
- const type2Provider = new Map()
38
-
39
- /**
40
- * Adds a logging provider for the specified type.
41
- * @param {string} typeName - The type identifier for the provider.
42
- * @param {Provider} provider - The logging provider implementation.
43
- * @returns {void}
44
- * @alias module:LogConfig.addProvider
45
- */
46
- function addProvider (typeName, provider) {
47
- assertString(typeName)
48
- Provider.assertProviderLike(provider)
49
- type2Provider.set(typeName.toUpperCase(), provider)
50
- }
51
-
52
- /**
53
- * Gets the logging provider for the specified type name.
54
- * @param {string} typeName - The type name to look up in the provider map.
55
- * @returns {Provider|undefined} The logging provider instance if found, otherwise undefined.
56
- */
57
- function getProvider (typeName) {
58
- assertString(typeName)
59
- return type2Provider.get(typeName.toUpperCase())
60
- }
61
-
62
- /**
63
- * Removes a logging provider of the specified type.
64
- * @param {string} typeName - The type name of the provider to remove.
65
- * @returns {boolean}
66
- */
67
- function removeProvider (typeName) {
68
- assertString(typeName)
69
- return type2Provider.delete(typeName.toUpperCase())
70
- }
71
-
72
- function clearProviders () {
73
- type2Provider.clear()
74
- }
75
-
76
- /**
77
- * Returns an array of all registered factory types and intances.
78
- * 1. Each entry is a [type, factory] pair
79
- * @returns {Array<{0:string, 1:Provider}>} An array of factory entries.
80
- */
81
- function listProviders () {
82
- return [...type2Provider.entries()]
83
- }
84
-
85
- /**
86
- * Created LogFactories Index with type name
87
- * @type {Map<string, LogFactory>}
88
- * @public
89
- */
90
- const type2Factory = new Map()
91
-
92
- /**
93
- * Registers a log factory for a given type name.
94
- * @param {string} typeName - The name of the log type to register.
95
- * @param {LogFactory} logFactory - Factory function that creates a logger for the specified type.
96
- */
97
- function addFactory (typeName, logFactory) {
98
- assertString(typeName)
99
- LogFactory.assertLogFactoryLike(logFactory)
100
- type2Factory.set(typeName.toUpperCase(), logFactory)
101
- }
102
-
103
- /**
104
- * Removes a factory of the given type from the type-to-factory mapping.
105
- * @param {string} typeName - The name of the type whose factory should be removed.
106
- * @returns {boolean}
107
- */
108
- function removeFactory (typeName) {
109
- assertString(typeName)
110
- return type2Factory.delete(typeName.toUpperCase())
111
- }
112
-
113
- /**
114
- * Gets the factory function associated with the given type name.
115
- * @param {string} typeName - The name of the type to look up.
116
- * @returns {LogFactory|undefined} The factory function for the specified type.
117
- */
118
- function getFactory (typeName) {
119
- assertString(typeName)
120
- return type2Factory.get(typeName.toUpperCase())
121
- }
122
-
123
- /**
124
- * Clears all registered factories from the type2Factory instance.
125
- * This is typically used to reset the factory state during testing or teardown.
126
- */
127
- function clearFactories () {
128
- type2Factory.clear()
129
- }
130
-
131
- /**
132
- * Returns an array of all registered factory types and intances.
133
- * 1. Each entry is a [type, factory] pair
134
- * @returns {Array<{0:string, 1:LogFactory}>} An array of factory entries.
135
- */
136
- function listFactories () {
137
- return [...type2Factory.entries()]
138
- }
139
-
140
- function clear () {
141
- clearProviders()
142
- clearFactories()
143
- }
144
-
145
- const LogConfig = {
146
- currentProvider,
147
- currentLevel,
148
- type2Provider,
149
- type2Factory,
150
- addProvider,
151
- getProvider,
152
- removeProvider,
153
- clearProviders,
154
- listProviders,
155
- addFactory,
156
- getFactory,
157
- removeFactory,
158
- clearFactories,
159
- listFactories,
160
- clear
161
- }
162
-
163
- module.exports = LogConfig
@@ -1,88 +0,0 @@
1
- 'use strict'
2
-
3
- // owned
4
- // eslint-disable-next-line no-unused-vars
5
- const Logger = require('./logger')
6
-
7
- /**
8
- * @abstract
9
- */
10
- class LogFactory {
11
- /**
12
- * Checks if a value resembles a LogFactory by verifying it has required methods.
13
- * @param {*} value - The value to check
14
- * @returns {boolean}
15
- */
16
- static isLogFactoryLike (value) {
17
- if (value == null) {
18
- return false
19
- }
20
- return typeof value === 'object' && typeof value.createLogger === 'function' && typeof value.setLevel === 'function'
21
- }
22
-
23
- /**
24
- * Asserts that the given value is a valid LogFactory-Like object.
25
- * @throws {Error} Throws an error if the value is not LogFactory-Like
26
- * @param {*} value - The value to check.
27
- */
28
- static assertLogFactoryLike (value) {
29
- if (!this.isLogFactoryLike(value)) {
30
- throw new Error('Not LogFactory')
31
- }
32
- }
33
-
34
- /**
35
- * Creates a new logging provider instance.
36
- * @param {{}} libraryModule - the library module
37
- * @param {{}} setting - Configuration settings for the provider
38
- */
39
- constructor (libraryModule, setting) {
40
- this._libraryModule = libraryModule
41
- this._setting = setting
42
- }
43
-
44
- get libraryModule () {
45
- return this._libraryModule
46
- }
47
-
48
- get setting () {
49
- return this._setting
50
- }
51
-
52
- /**
53
- * Initializes the logging provider.
54
- * 1. Do nothing in the default implementation.
55
- * 2. Override this method to initialize the provider.
56
- * @returns {Promise<void>|void}
57
- */
58
- init () {
59
- // do nothing
60
- }
61
-
62
- /**
63
- * Update factory's Log Level
64
- * 1. Only Provider knows how to update
65
- * * update level in "setting", so the new created Logger will use the new level
66
- * 2. called when users want to change global log level via CommonsLogging.setLevel()
67
- * @param {number} level - The log level to set, see {@link LogLevel.Level}
68
- * @returns {void}
69
- * @throws {Error} Throws an error as this method is Not Impled Yet.
70
- * @abstract
71
- */
72
- setLevel (level) {
73
- throw new Error('Not Impled Yet')
74
- }
75
-
76
- /**
77
- * Creates a new logger named with the "loggerName"
78
- * @param {string} loggerName - The name to associate with the logger instance.
79
- * @throws {Error} Throws an error indicating the method is Not Impled Yet yet.
80
- * @returns {Logger} A new logger intance
81
- * @abstract
82
- */
83
- createLogger (loggerName) {
84
- throw new Error('Not Impled Yet')
85
- }
86
- }
87
-
88
- module.exports = LogFactory
package/lib/log-level.js DELETED
@@ -1,169 +0,0 @@
1
- 'use strict'
2
-
3
- const { TypeUtils: { isNumber, isString } } = require('@creejs/commons-lang')
4
-
5
- /**
6
- * @namespace LogLevel
7
- * @description Defines the logging levels and provides utilities for working with them.
8
- */
9
- // module vars
10
- const TRACE = 'TRACE'
11
- const DEBUG = 'DEBUG'
12
- const INFO = 'INFO'
13
- const WARN = 'WARN'
14
- const ERROR = 'ERROR'
15
- const FATAL = 'FATAL'
16
- const OFF = 'OFF'
17
- const ALL = 'ALL'
18
-
19
- const Names = new Set([TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF, ALL])
20
- /**
21
- * The logging level numbers, where OFF=-1, FATAL=0, ERROR=1, WARN=2, INFO=3, DEBUG=4, TRACE=5, ALL=6
22
- * @enum {number}
23
- * @memberof LogLevel
24
- * @static
25
- */
26
- const Level = {
27
- OFF: -1,
28
- FATAL: 0,
29
- ERROR: 1,
30
- WARN: 2,
31
- INFO: 3,
32
- DEBUG: 4,
33
- TRACE: 5,
34
- ALL: 6
35
- }
36
-
37
- /**
38
- * Standard logging level names
39
- * @enum {string}
40
- * @memberof LogLevel
41
- * @static
42
- * @constant
43
- */
44
- const Name = {
45
- TRACE,
46
- DEBUG,
47
- INFO,
48
- WARN,
49
- ERROR,
50
- FATAL,
51
- OFF
52
- }
53
-
54
- /**
55
- * Internal map for quick lookup of level names by their numeric values
56
- * @type {Map<number, string>}
57
- * @private
58
- */
59
- const Value2Name = new Map()
60
- for (const [name, value] of Object.entries(Level)) {
61
- Value2Name.set(value, name)
62
- }
63
-
64
- /**
65
- * The default logging level (ERROR)
66
- * @type {number}
67
- * @memberof LogLevel
68
- * @static
69
- */
70
- const DefaultLevel = Level.ERROR
71
-
72
- /**
73
- * Converts a numeric logging level value to its corresponding name.
74
- * @param {number} value - The numeric logging level value to convert.
75
- * @returns {string|undefined} The name associated with the given logging level value, from {@link LogLevel.Name}.
76
- * @memberof LogLevel
77
- * @static
78
- */
79
- function value2Name (value) {
80
- if (!isNumber(value)) {
81
- return undefined
82
- }
83
- return Value2Name.get(value)
84
- }
85
-
86
- /**
87
- * Converts a logging level name to its corresponding numeric value.
88
- * @param {string} name - The name of the logging level.
89
- * @returns {number|undefined} The numeric value of the logging level from {@link LogLevel.Level}, or undefined if name is not supported.
90
- * @memberof LogLevel
91
- * @static
92
- */
93
- function name2Value (name) {
94
- if (!isString(name)) {
95
- return undefined
96
- }
97
- // @ts-ignore
98
- return Level[name.toUpperCase()]
99
- }
100
-
101
- /**
102
- * Checks if the given level is a valid log level.
103
- * @param {number} level - The log level to check.
104
- * @returns {boolean} True if the level is valid, false otherwise.
105
- * @memberof LogLevel
106
- * @static
107
- */
108
- function hasLevel (level) {
109
- return Value2Name.has(level)
110
- }
111
-
112
- /**
113
- * Checks if the given level name exists in the Name enum/object.
114
- * @param {string} levelName - The name of the log level to check.
115
- * @returns {boolean} True if the level name exists, false otherwise.
116
- * @memberof LogLevel
117
- * @static
118
- */
119
- function hasName (levelName) {
120
- if (!isString(levelName)) {
121
- return false
122
- }
123
- return Names.has(levelName.toUpperCase())
124
- }
125
-
126
- /**
127
- * Validates that a given level is a number and falls within the valid range.
128
- * @param {*} level - The log level to validate
129
- * @throws {Error} If level is not a number or outside valid range (Level.OFF to Level.ALL)
130
- * @memberof LogLevel
131
- * @static
132
- */
133
- function assertLevel (level) {
134
- if (!isNumber(level)) {
135
- throw new Error(`Level Not Number: type=${typeof level} value=${level}`)
136
- }
137
- if (level < Level.OFF || level > Level.ALL) {
138
- throw new Error(`Not Valid Level: ${level}, Expect between ${Level.OFF} and ${Level.ALL}`)
139
- }
140
- }
141
-
142
- const LogLevel = {
143
- Name,
144
- Level,
145
- DefaultLevel,
146
- hasLevel,
147
- hasName,
148
- assertLevel,
149
- /**
150
- * Same with [Name]{@link LogLevel.Name}
151
- * @type {Object}
152
- * @memberof LogLevel
153
- * @static
154
- */
155
- LevelName: Name,
156
- /**
157
- * Same with [Level]{@link LogLevel.Level}
158
- * @type {Object}
159
- * @memberof LogLevel
160
- * @static
161
- */
162
- LevelValue: Level,
163
-
164
- value2Name,
165
-
166
- name2Value
167
- }
168
-
169
- module.exports = LogLevel
@@ -1,11 +0,0 @@
1
- 'use strict'
2
-
3
- // internal
4
-
5
- // owned
6
- const Log4jsProvider = require('./log4js-provider')
7
-
8
- // module vars
9
- const log4jsProvider = new Log4jsProvider()
10
-
11
- module.exports = log4jsProvider
@@ -1,12 +0,0 @@
1
- 'use strict'
2
-
3
- const DefaultConfig = { // 6x fromat
4
- appenders: {
5
- out: { type: 'console' }
6
- },
7
- categories: {
8
- default: { appenders: ['out'], level: 'error' }
9
- }
10
- }
11
-
12
- module.exports = DefaultConfig
@@ -1,90 +0,0 @@
1
- 'use strict'
2
- // internal
3
- const { TypeAssert: { assertString } } = require('@creejs/commons-lang')
4
- // owned
5
- // eslint-disable-next-line no-unused-vars
6
- const Logger = require('../logger')
7
- // eslint-disable-next-line no-unused-vars
8
- const { Level, value2Name } = require('../log-level')
9
- const LogFactory = require('../log-factory')
10
-
11
- const Log4jsLogger = require('./log4js-logger')
12
- const DefaultConfig = require('./log4js-6x-config')
13
-
14
- /**
15
- * Use log4js as the logging provider.
16
- */
17
- class Log4jsFactory extends LogFactory {
18
- /**
19
- * the log4js module instance.
20
- * @returns {{}} The log4js module instance.
21
- */
22
- get log4js () {
23
- return this._libraryModule
24
- }
25
-
26
- get setting () {
27
- if (this._setting == null) {
28
- this._setting = cloneDefaultConfig()
29
- }
30
- return this._setting
31
- }
32
-
33
- /**
34
- * Initializes the log4js provider by configuring it with the provided settings.
35
- * @override
36
- */
37
- init () {
38
- // @ts-ignore
39
- this.log4js.configure(this.setting)
40
- }
41
-
42
- /**
43
- * Update factory's Log Level
44
- * 1. Only Provider knows how to update
45
- * @param {number} level - The log level to set, see {@link LogLevel.Level}
46
- * @returns {void}
47
- * @throws {Error} Throws an error as this method is Not Impled Yet.
48
- * @abstract
49
- */
50
- setLevel (level) {
51
- let levelName = value2Name(level)
52
- if (levelName == null) {
53
- throw new Error(`Invalid log level: ${level}`)
54
- }
55
- levelName = levelName.toLowerCase()
56
- let updated = false
57
- // @ts-ignore
58
- const { categories } = this.setting
59
- for (const categoryKey in categories) {
60
- const category = categories[categoryKey]
61
- const { level: categoryLevel } = category
62
- if (categoryLevel !== levelName) {
63
- category.level = levelName.toLowerCase()
64
- updated = true
65
- }
66
- }
67
- // init log4js again
68
- updated && this.init()
69
- }
70
-
71
- /**
72
- * Creates a new logger instance with the specified name and log level.
73
- * @param {string} loggerName - The name of the logger to create.
74
- * @returns {Logger} A new logger instance configured with the given name and level.
75
- * @override
76
- */
77
- createLogger (loggerName) {
78
- assertString(loggerName)
79
- // @ts-ignore
80
- const nativeLogger = this.log4js.getLogger(loggerName)
81
- const logger = new Log4jsLogger(loggerName, nativeLogger)
82
- return logger
83
- }
84
- }
85
-
86
- function cloneDefaultConfig () {
87
- return JSON.parse(JSON.stringify(DefaultConfig))
88
- }
89
-
90
- module.exports = Log4jsFactory
@@ -1,111 +0,0 @@
1
- 'use strict'
2
-
3
- // 3rd
4
- // internal
5
- // owned
6
- const { assertLevel, value2Name, name2Value, Level } = require('../log-level')
7
- const Logger = require('../logger')
8
- // module vars
9
-
10
- class Log4jsLogger extends Logger {
11
- /**
12
- * Creates a new ConsoleLogger instance.
13
- * @constructor
14
- * @param {string} name - The name of the logger.
15
- * @param {*} nativeLogger - Log4js library
16
- */
17
- constructor (name, nativeLogger) {
18
- super(name, nativeLogger)
19
- // @ts-ignore
20
- this._level = undefined // MUST NOT accept level from outside
21
- this._logger = nativeLogger
22
- }
23
-
24
- /**
25
- * 1. log4js may have many categories(loggerName) with diffirent level
26
- * 2. return the underlying log4js native logger's level
27
- * @returns {number} The current log level.
28
- */
29
- get level () {
30
- if (this._level == null) {
31
- const levelName = this._logger.level.levelStr
32
- if (levelName == null) {
33
- return Level.OFF
34
- }
35
- const level = name2Value(levelName)
36
- if (level == null) {
37
- throw new Error(`Unknown level name: ${levelName}`)
38
- }
39
- return level
40
- }
41
- return this._level
42
- }
43
-
44
- /**
45
- * set log4js native logger's level
46
- * @param {number} level
47
- * @override
48
- * @protectd
49
- */
50
- _setLevel (level) {
51
- assertLevel(level)
52
- const levelName = value2Name(level)
53
- if (levelName == null) {
54
- throw new Error(`Invalid log level: ${level}`)
55
- }
56
- // log4js use string level, eg. 'error, trace'
57
- this._logger.level = levelName.toLowerCase()
58
- }
59
-
60
- /**
61
- * Logs a fatal error message with timestamp and logger name.
62
- * Only outputs if fatal logging is enabled for this logger instance.
63
- * @param {...any} args - Arguments to log (will be space-separated)
64
- */
65
- _fatal (...args) {
66
- this._logger.fatal(...args)
67
- }
68
-
69
- /**
70
- * Logs an error message to the console with timestamp and logger name.
71
- * Only logs if error logging is enabled for this logger instance.
72
- * @param {...any} args - Arguments to be logged as error message
73
- */
74
- _error (...args) {
75
- this._logger.error(...args)
76
- }
77
-
78
- /**
79
- * Logs a warning message to the console if warn logging is enabled.
80
- * @param {...any} args - The arguments to log as a warning message.
81
- */
82
- _warn (...args) {
83
- this._logger.warn(...args)
84
- }
85
-
86
- /**
87
- * Logs debug messages to console if debug mode is enabled.
88
- * @param {...any} args - The data to be logged
89
- */
90
- _debug (...args) {
91
- this._logger.debug(...args)
92
- }
93
-
94
- /**
95
- * Logs an info message to the console with timestamp and logger name.
96
- * @param {...any} args - The data to be logged. Accepts multiple arguments.
97
- */
98
- _info (...args) {
99
- this._logger.info(...args)
100
- }
101
-
102
- /**
103
- * Logs a trace message with timestamp and logger name if trace logging is enabled.
104
- * @param {...any} args - Data to be logged as trace message.
105
- */
106
- _trace (...args) {
107
- this._logger.trace(...args)
108
- }
109
- }
110
-
111
- module.exports = Log4jsLogger
@@ -1,35 +0,0 @@
1
- 'use strict'
2
- // internal
3
- const { TypeAssert: { assertNotNil } } = require('@creejs/commons-lang')
4
-
5
- // owned
6
- const ProviderType = require('../provider-type')
7
- const Provider = require('../provider')
8
- const Log4jsFactory = require('./log4js-factory')
9
-
10
- class Log4jsProvider extends Provider {
11
- /**
12
- * Gets the provider type (Log4js).
13
- * @returns {string} "LOG4JS"
14
- * @override
15
- */
16
- getType () {
17
- return ProviderType.Log4js
18
- }
19
-
20
- /**
21
- * Creates a new Provider instance.
22
- * @param {*} libraryModule - The library module to be used.
23
- * @param {*} setting - Configuration settings for the provider.
24
- * @returns {Log4jsFactory} A new instance of Log4jsFactory.
25
- * @override
26
- */
27
- createLogFactory (libraryModule, setting) {
28
- assertNotNil(libraryModule)
29
- const factory = new Log4jsFactory(libraryModule, setting)
30
- factory.init()
31
- return factory
32
- }
33
- }
34
-
35
- module.exports = Log4jsProvider