Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

py-logging

jose-pleonasm309MIT2.5.1

Javascript logging library based on the Python logging module

py-logging, logging, logger, python

readme

py-logging

Javascript logging library based on the Python logging module.

NPM

Main features:

  • Hierarchical organization of loggers.
  • Handlers for various ways of log records processing.
  • Filters for very precise log records filtering.
  • Formatters for custom layout of log records in the final output.

More about Python logging here: https://docs.python.org/2/library/logging.html

Installation

npm install py-logging

Documentation

https://github.com/jose-pleonasm/py-logging/tree/master/API.md

Usage

A simplest way:

var logging = require('py-logging');

logging.info('My message to the world.');
// will do nothing, because default level is WARNING

logging.warning('My another message to the world.');
// will print a message to the console:
// WARNING:root:My another message to the world.

Recording log records in a file:

var logging = require('py-logging');
// for recording log records to the file is necessary to install nodekit
require('py-logging/nodekit').install(logging);

logging.basicConfig({ filename: 'example.log', level: 'DEBUG' });

logging.debug('I am going to say something...');
logging.info('Hello!');
// will create a file "example.log" with content like this:
// DEBUG:root:I am going to say something...
// INFO:root:Hello!

Custom layout of log records:

var logging = require('py-logging');

logging.basicConfig({
    format: '%(asctime) - %(levelname) - %(message)',
    timeFormat: '%ISO',
    level: 'DEBUG'
});

logging.info('So far so good.');
// 2017-02-12T15:02:02.910Z - INFO - So far so good.

Logging an error:

var logging = require('py-logging');

try {
    someDangerousFunction();
}
catch (error) {
    logging.error('An error occurred during the function call:', error);
}
// ERROR:root:An error occurred during the function call:
// ReferenceError: someDangerousFunction is not defined
//     at Object.<anonymous> (/example.js:6:2)
//     at Module._compile (module.js:571:32)
//     at Object.Module._extensions..js (module.js:580:10)
//     at Module.load (module.js:488:32)
//     at tryModuleLoad (module.js:447:12)
//     at Function.Module._load (module.js:439:3)
//     at Module.runMain (module.js:605:10)
//     at run (bootstrap_node.js:418:7)
//     at startup (bootstrap_node.js:139:9)
//     at bootstrap_node.js:533:3

Instantiating your own Logger:

var logging = require('py-logging');
var logger = logging.getLogger('name');

logging.basicConfig({ level: 'DEBUG' });

logger.info('Something specific for this logger.');
// INFO:name:Something specific for this logger.

More complex configuration:

var logging = require('py-logging');
// for recording log records to the file is necessary to install nodekit
require('py-logging/nodekit').install(logging);

var simpleFormatter = new logging.Formatter('%(levelname) %(name) %(message)');
var verboseFormatter = new logging.Formatter('%(asctime) %(levelname) %(name) %(message)');
var consoleHandler = new logging.ConsoleHandler();
var fileHandler = new logging.RotatingFileHandler('./example.log');
var foo = logging.getLogger('foo');
var bar = logging.getLogger('foo.bar');

consoleHandler.setFormatter(simpleFormatter);
consoleHandler.setLevel(logging.DEBUG);
foo.addHandler(consoleHandler);
foo.setLevel(logging.DEBUG);
fileHandler.setFormatter(verboseFormatter);
fileHandler.setLevel(logging.INFO);
bar.addHandler(fileHandler);

foo.info('First message.');
// will print a message to the console:
// INFO foo First message.

bar.info('Second message.');
// will print a message to the console:
// INFO foo.bar Second message.
// and into the file:
// 2017-02-12 15:43:52 INFO foo.bar Second message.

Or by a configuration object (can be JSON):

var logging = require('py-logging');
// for recording log records to the file is necessary to install nodekit
require('py-logging/nodekit').install(logging);

logging.config({
    'version': 1,
    'formatters': {
        'simple': {
            'format': '%(levelname) %(name) %(message)'
        },
        'verbose': {
            'format': '%(asctime) %(levelname) %(name) %(message)'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.ConsoleHandler',
            'formatter': 'simple',
            'level': 'DEBUG'
        },
        'file': {
            'class': 'logging.RotatingFileHandler',
            'filename': './example.log',
            'formatter': 'verbose',
            'level': 'INFO'
        }
    },
    'loggers': {
        'foo': {
            'level': 'DEBUG',
            'handlers': ['console']
        },
        'foo.bar': {
            'handlers': ['file']
        }
    }
});

logging.getLogger('foo').info('First message.');
// will print a message to the console:
// INFO foo First message.

logging.getLogger('foo.bar').info('Second message.');
// will print a message to the console:
// INFO foo.bar Second message.
// and into the file:
// 2017-02-12 15:43:52 INFO foo.bar Second message.

changelog

2.4.0 (2019-03-26)

Added

  • Added support for args entry in config

2.3.0 (2018-09-04)

Added

  • Added (back) method getChild

2.2.0 (2018-08-21)

Changed

  • logging.config: creating instances only if are used.

Added

  • Added NullHandler

2.1.0 (2018-08-09)

Changed

  • Filter can be just a function.
  • Some small improvements.

2.0.0 (2018-02-18)

Breaking Changes

  • The library is divided into 3 modules:
    • py-logging (core),
    • py-logging/commonkit (more features for both platforms),
    • py-logging/nodekit (features for Node.js platform, mostly handlers).
    • There is also separate package for browsers: py-logging-browserkit
  • Handlers are redesigned:
    • (Abstract) lock mechanism has been removed.
    • Node.js handlers are completely rewritten.
    • New API, but almost the same as the old one.
  • Renamed properties of LogRecord:
    • pid -> process
    • processtitle -> processname
  • Method Logger#getChild has been removed.

Added

  • HttpHandler
  • py-logging/commonkit:
    • JsonFormatter
    • WhiteListFilter
    • BlackListFilter
    • AccumulativeHandler

1.4.2 (2018-01-28)

Fixed

  • Formatting Integers.

1.4.1 (2017-12-30)

Fixed

  • Documentation.

1.4.0 (2017-12-30)

Added

  • New handler: StreamHandler.

1.3.0 (2017-12-06)

Added

Changed

  • New error messages.

1.2.0 (2017-10-27)

Added

  • Added properties "pid" and "processtitle" to LogRecord.
  • More specific "toString" methods.

1.1.1 (2017-10-27)

Added

  • Added method "hasHandlers".

Fixed

  • Fixed logging methods

1.0.0 (2017-02-12)

Added

  • Documentation.
  • Logging methods directly in the module API.
  • Added method "log".

Fixed

  • FileHandler#emit (DeprecationWarning: Calling an asynchronous function without callback is deprecated.).

0.9.0 (2017-02-09)

Added

  • Added a config method.
  • Added changelog.