@creejs/commons-logging
v2.1.10
Published
Common Utils About Logging
Downloads
265
Maintainers
Readme
@creejs/commons-logging
A Common Logging Library:
light-weight, No 3rd Dependencies
Obey style of commons-logging, Output logs to Console
Log4js supported
Work with log4js smoothly, No Changes to existed codes
use Property to check LogLevel
- properties like: logger.errorEnabled, logger.traceEnabled, ...
- Also Support: logger.isErrorEnabled(), logger.isTraceEnabled(), ...
Extensible via Provider mechanism
Easy to support more Logging Libraries via adding new Providers
Install
npm intall @creejs/commons-loggingUsage
The short examples demostrate some basic usages:
Embbed Console-Logging
const { getLogger } = require('@creejs/commons-logging')
// get or create Logger instance with default level: error
const logger = getLogger('logger1')
// logging, use property to check level
logger.errorEnabled && logger.error('This a', 'test string')
// 2025-07-14T09:28:30.442Z logger1 [Debug] This a test string
// logging, use method to check level
logger.isErrorEnabled() && logger.error('This a', 'test string')
// 2025-07-14T09:28:30.445Z logger1 [Debug] This a test stringWork with Log4js
const { ProviderType, configureThenUse, getLogger } = require('@creejs/commons-logging')
const Log4js = require('log4js')
// inject Log4js with default setting: log to Console with Error level
configureThenUse(ProviderType.Log4js, Log4js)
// get or create Logger instance
const logger = getLogger('logger1')
// logging
logger.errorEnabled && logger.error('This a', 'test string')
// 2025-07-14T09:43:21.508Z logger1 [Error] This a test string
logger.isFatalEnabled() && logger.fatal('Another', 'message')
// 2025-07-14T09:43:21.511Z logger1 [Fatal] Another messageWork with Log4js, use customized settings
const { ProviderType, configure, use, getLogger } = require('@creejs/commons-logging')
const Log4js = require('log4js')
const setting = { // log4js 6.x syntax
appenders: {
out: { type: 'console' }
},
categories: {
default: { appenders: ['out'], level: 'info' }
}
}
// inject Log4js with default setting: log to Console with Error level
configure(ProviderType.Log4js, Log4js, setting)
// use log4js as Current Log Provider
use(ProviderType.Log4js)
// get or create Logger instance
const logger = getLogger('logger1')
// logging
logger.errorEnabled && logger.error('log4js error string')
// [2025-07-14T19:37:45.308] [ERROR] logger1 - log4js error string
logger.isInfoEnabled() && logger.info('log4js info string')
// [2025-07-14T19:37:45.312] [INFO] logger1 - log4js info stringAdd New Provider
See the Example under /examples/new-provider
Add a new Provider to support new Logging Libraries, the limited steps should be following:
- Implement the Provider Interface
- Implement the LogFactory abstract class
- Implement the Logger abstract class
- Export a Provider Instance
- Add Provider
- Configure Provider
- Use Provider
Implement the Provider Interface
The Provider Class:
class Provider {
/**
* @return {String} The type of the provider.
*/
getType () {
throw new Error('Not Impled Yet')
}
/**
* Create a new LogFactory instance
* @param {*} [nativeLib] - eg. log4js
* @param {*} [setting] - eg. log4js' Setting JSON
* @returns {LogFactory} A new instance of LogFactory.
*/
createLogFactory (nativeLib, setting) {
throw new Error('Not Impled Yet')
}
}Implement the LogFactory abstract class
class LogFactory {
/**
* Initializes the logging provider.
* 1. Do nothing in the default implementation.
* 2. Override this method to initialize the provider.
* @returns {Promise<void>|void}
*/
init () {
// do nothing
}
/**
* Update factory's Log Level
* 1. Only Provider knows how to update
* * update level in "setting", so the new created Logger will use the new level
* 2. called when users want to change global log level via CommonsLogging.setLevel()
* @param {number} level - The log level to set, see {@link LogLevel.Level}
* @returns {void}
* @abstract
*/
setLevel (level) {
throw new Error('Not Impled Yet')
}
/**
* Creates a new logger named with the "loggerName"
* @param {string} loggerName - The name to associate with the logger instance.
* @throws {Error} Throws an error indicating the method is Not Impled Yet yet.
* @returns {Logger} A new logger intance
* @abstract
*/
createLogger (loggerName) {
throw new Error('Not Impled Yet')
}
}Implement the Logger abstract class
class Logger {
/**
* Sets the logging level
* @param {number} level
* @throws {Error} Always throws "Not Impled Yet Yet" error.
* @protected
* @abstract
*/
_setLevel (level) {
throw new Error('Not Impled Yet')
}
/**
* Override this method to implement fatal logging.
* @protected
* @param {...*} args - Variable arguments
* @throws {Error} Always throws "Not Impled Yet Yet" error
*/
_fatal (...args) {
throw new Error('Not Impled Yet')
}
/**
* Override this method to implement error logging.
* @protected
* @param {...*} args - Variable arguments
* @throws {Error} Always throws "Not Impled Yet Yet" error
*/
_error (...args) {
throw new Error('Not Impled Yet')
}
/**
* Override this method to implement warn logging.
* @protected
* @param {...*} args - Variable arguments
* @throws {Error} Always throws "Not Impled Yet Yet" error
*/
_warn (...args) {
throw new Error('Not Impled Yet')
}
/**
* Override this method to implement debug logging.
* @protected
* @param {...*} args - Variable arguments
* @throws {Error} Always throws "Not Impled Yet Yet" error
*/
_debug (...args) {
throw new Error('Not Impled Yet')
}
/**
* Override this method to implement info logging.
* @protected
* @param {...*} args - Variable arguments
* @throws {Error} Always throws "Not Impled Yet Yet" error
*/
_info (...args) {
throw new Error('Not Impled Yet')
}
/**
* Override this method to implement trace logging.
* @protected
* @param {...*} args - Variable arguments
* @throws {Error} Always throws "Not Impled Yet Yet" error
*/
_trace (...args) {
throw new Error('Not Impled Yet')
}
}Export a Provider Instance
Put your Provider, LogFactory, Logger inside one Folder, and export the new Provider() inside index.js
'user strict'
const YourProvider = require('./provider')
module.exports = new YourProvider()Add->Configure->Use Provider
const { add, configure, use, getLogger } = require('@creejs/commons-logging')
const newProvider = require('YourProviderModule')
// add your Provider
add(newProvider)
// configure your Provider
configure(newProvider.getType(), ThirdPartLib, yourSetting)
// set your Provider as Default
use(newProvider.getType())