@17media/node-logger

    2.1.1 • Public • Published

    node-logger CircleCI npm (scoped) Coverage Status

    Centralized logger for 17.Media Node.JS projects

    ... in the fires of Mount Doom, the dark lord Sauron forged, in secret, a master logger to control all others.
    "One logger to log them all!"

    Usage

    First of all you have to set up your configs:

    import { Level } from '@17media/node-logger';
    
    const loggerConfig = {
      // configs shared by all log services
      base: {
        // minimum level to trigger logger [ERROR|WARN|INFO|DEBUG]
        // levels lower than this will not be logged
        // it can be overridden in each service specific config
        logLevel: Level.INFO,
    
        // project name, preferably 'name' from package.json
        project: require('~/package.json').name,
    
        // environment [production|stage|development]
        environment: 'production',
      },
    
      // configs for slack
      Slack: {
        // override minimum log level (optional)
        logLevel: Level.WARN,
    
        // slack bot access token
        slackToken: SLACK_BOT_TOKEN,
    
        // slack channel to log messages to
        slackChannel: SLACK_BOT_ALERT_CHANNEL,
      },
    
      // configs for log collecting service (fluentD)
      Fluentd: {
        // override minimum log level (optional)
        logLevel: Level.INFO,
    
        // log collector URL
        collectorUrl: LOG_COLLECTOR_URL,
      },
    
      // configs for logging to console
      Console: {
        // override minimum log level (optional)
        logLevel: Level.ERROR,
      },
    };

    Then, there are two ways to continue, the easy way and the complete way:

    Easy Way

    This is the simple way and should cover ~90% of the use cases.

    const logger = require('@17media/node-logger').createLogger(loggerConfig)('some:label');
    
    logger.debug('track the variable value during development', { info });
    logger.info('somehing worth logging for future reference', { additionalInfo });
    logger.warn('somehing worth notice', { additionalInfo });
    logger.error('somehing terrible happened', new Error());
    logger.fatal('somehing disastrous happened', new Error(), { additionalInfo });

    Complete Way

    Provide configs to initiate the logger:
    A log service will be used only when all corresponding configs are provided.

    const { Logger } = require('@17media/node-logger');
    const logger = new Logger(loggerConfig);

    Use the logger like:

    const { LogMessage } = require('@17media/node-logger');
    
    logger.Log(
      Level.WARN,
      new LogMessage('something happened', { additionalInfo }),
      'some:label:for:the:message'
    );

    In most situations you would want to pre-label all the messages logged in a file.
    You can do it by:

    const labelledLogger = logger.Label('path:to:this:file');
    
    labelledLogger.Log(
      Level.WARN,
      new LogMessage('something happened', { additionalInfo })
    );

    You can extend LogMessage and ErrorMessage to create customized formatting for your context.

    Install

    npm i @17media/node-logger

    DownloadsWeekly Downloads

    390

    Version

    2.1.1

    License

    MIT

    Unpacked Size

    23.1 kB

    Total Files

    21

    Last publish

    Collaborators

    • papap35
    • yujuiting