3.3.2 • Published 4 years ago

corie-logger v3.3.2

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

corie-logger

中文文档

npm package

Note: The Logging Framework for JavaScript with log4j configuration writes lines to a file that roll over when they reach a maximum size, or a date/time. You could provide any custom Appenders to write log messages wherever you need, it currently support logging messages to console and files.


Table of contents


Installation

Node >= 8

npm install --save corie-logger

# or

cnpm install --save corie-logger

Usage

const { configure, getLogger } = require('corie-logger');

// './conf/corie-logger.json' will become to
// `${process.cwd()}/conf/corie-logger.json`
configure('./conf/corie-logger.json');

const appLogger = getLogger('app');

// logging for log4j
appLogger.trace('message', 'message2', ...);
appLogger.debug('message', 'message2', ...);
appLogger.info('message', 'message2', ...);
appLogger.warn('message', 'message2', ...);
appLogger.error('message', 'message2', ...);
appLogger.fatal('message', 'message2', ...);

// changed levels
appLogger.setLevels('syslog');

// logging for syslog
appLogger.debug('message', 'message2');
appLogger.info('message', 'message2');
appLogger.notice('message', 'message2');
appLogger.warn('message', 'message2');
appLogger.error('message', 'message2');
appLogger.critical('message', 'message2');
appLogger.alert('message', 'message2');
appLogger.emergency('message', 'message2');

// The first optional param is level
appLogger.log('INFO', 'message', 'message2', ...);
appLogger.log('error', 'message', 'message2', ...);
appLogger.log('message', 'message2', ...);

Custom Appender

Must implement functions append and destroy

'use strict';

const { AbstractAppender } = require('corie-logger');

class CustomAppender extends AbstractAppender {

  constructor(name, options, config) {
    super(name, options, config);
    // options - current appender options
    // config - global config info
    // ... 
    // codes
    // ...
  }

  append(args, options) {
    // options.category - logger name
    // options.level    - logger level
    // options.timestamp

    // codes
  }

  destroy() {
    // destroy this appender
  }

}

module.exports = CustomAppender;

Custom Layout

'use strict';

module.exports = function (config) {
  return function (args, options) {
    // options.category    logger name
    // options.level       logger level
    // options.timestamp

    // return formal args
  };
};

API

Global API for corie-logger

configure( opts )
ParamTypeDescription
opts Objecta JSON Object
opts Stringa JSON file path
destroy()
getLogger( name )
ParamTypeDescription
name Stringget a Logger instance
addLayout( name, serializerGenerator )
ParamTypeDescription
name Stringa name of serializer generator function
serializerGenerator Functiona serializer generator function
addAppender( name, Appender )
ParamTypeDescription
name Stringa name of custom Appender
Appender Classa custom Appender

API for Logger instance

setLevels
ParamTypeDescription
levels Stringprovide log4j and syslog currently
levels Arraycustom levels
setLevel
ParamTypeDescription
levels Stringlogger level

Configuration

appenders

  • type - "file", "dateFile" or "console". "file" means to log messages to a file; "dateFile" means to log messages to a file with datetime filename; "console" means to log messages to console.
  • layout - optional. "basic", "json" or an object(default: "basic"). "json" means to format a message to a JSON string.
  • fileName - when type is "dateFile", the date pattern must be configured in the file name.
  • maxLogSize - optional, use case insensitive k、m、g as unit
  • numBackups - optional, "10d" can be configured that means to back up logs for 10 days
  • level - optional, log level

categories

  • appenders - configure different appenders
  • level - log level
  • levels - log levels

level - log level

levels - "log4j", "syslog", Array. log levels

{
  "appenders": {
    "log1": { // getLogger('log1')
      "type": "file", // log messages to a file
      "layout": "json", // optional, not configured or json, or an object
      "fileName": "./logs/app.log", // log file path
      "maxLogSize": "10M", // optional, use case insensitive k、m、g as unit
      "numBackups": 10 // optional, "10d" can be configured that means to back up logs for 10 days
    },
    "log2": { // getLogger('log2')
      "type": "dateFile", // log messages to a file with a datetime file name
      "fileName": "./logs/log1-%d{YYYY-MM-DD}.log" // log file path with a datetime pattern
    },
    "log3": { // getLogger('log3')
      "type": "console", // log messages to console
      "layout": {
        "datePattern": null // default: YYYY-MM-DD hh:mm:ss.SSS Z. null means ISOString formatter
      }
    }
  },
  "categories": {
    "default": {
      "appenders": [
        "app"
      ],
      "level": "ERROR"
    },
    "console": {
      "appenders": [
        "log2"
      ],
      "level": "INFO"
    },
    "file": {
      "appenders": [
        "app",
        "log2"
      ],
      "level": "INFO"
    },
    "dateFile": {
      "appenders": [
        "log1",
        "log2"
      ],
      "level": "INFO"
    }
  },
  "level": "ERROR", // optional, log lovel
  "levels": "syslog" // optional(default: "log4j"), "log4j", "syslog"
}

Examples

Release History

3.1.0

  • Fix bugs about throwing a Error before calling function configure
  • Removed caches after calling function getConsole
  • Changed property name filename to fileName, filename can be compatible
  • Property pattern have been removed in property appenders
  • Changed property name pattern to datePattern in property layout

3.1.1

  • Added function setLevel on the Logger instance
  • Removed the RedisAppender
  • Fix bugs about using custom Appender

3.1.2

  • Optimized codes

3.1.3

  • Supported to change levels for all category of logger
  • Supported to change level for all category of logger

3.2.0

  • Supported to change levels for a category of logger
  • added jest

3.2.1

  • extends corie-console

3.2.2

  • added extra options to append function for Appender

3.2.3

  • updated tests and package.json

3.2.4

  • added stdout and stderr Appender

3.2.5

  • extra options will be passed to each Appender

3.2.6

  • removed type "dateFile"

3.2.7

  • fixed ...extraOptions not being supported in node 8.2.1

3.3.1

  • updated plugins

3.3.2

  • updated plugins
3.3.2

4 years ago

3.3.1

5 years ago

3.3.0

5 years ago

3.2.7

5 years ago

3.2.6

5 years ago

3.2.5

5 years ago

3.2.4

5 years ago

3.2.3

5 years ago

3.2.2

5 years ago

3.2.1

5 years ago

3.2.0

5 years ago

3.1.3

5 years ago

3.1.2

5 years ago

3.1.1

5 years ago

3.1.0

5 years ago

3.0.2

5 years ago

3.0.1

5 years ago

3.0.0

5 years ago

2.0.7

5 years ago

1.0.3

5 years ago

2.0.6

5 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago