Giter Club home page Giter Club logo

egg-logger's Introduction

egg-logger

NPM version CI Test coverage Known Vulnerabilities npm download

Egg logger.

diagram

Including two base class, Logger and Transport:

  • Transport: Save log to file, stdout/stderr and network.
  • Logger: A logger can contains multi transports.

Install

$ npm i egg-logger

Usage

Create a Logger and add a file Transport.

const Logger = require('egg-logger').Logger;
const FileTransport = require('egg-logger').FileTransport;
const ConsoleTransport = require('egg-logger').ConsoleTransport;

const logger = new Logger();
logger.set('file', new FileTransport({
  file: '/path/to/file',
  level: 'INFO',
}));
logger.set('console', new ConsoleTransport({
  level: 'DEBUG',
}));
logger.debug('debug foo'); // only output to stdout
logger.info('info foo');
logger.warn('warn foo');
logger.error(new Error('error foo'));

Enable / Disable Transport

logger.disable('file');
logger.info('info'); // output nothing
logger.enable('file');
logger.info('info'); // output 'info' string

Duplicate

Duplicate error log to other logger.

Accept an options.excludes to special whether excludes some tranports.

logger.duplicate('error', errorLogger, { excludes: [ 'console' ]});
logger.error(new Error('print to errorLogger')); // will additional call `errorLogger.error`

Redirect

Redirect special level log to other logger.

oneLogger.redirect('debug', debugLogger); // all debug level logs of `oneLogger` will delegate to debugLogger

Reload

logger.reload(); // will close the exists write stream and create a new one.

Custom Transport

You can make your own Transport for logging,e.g.: send log to your logging server.

const urllib = require('urllib');
const Transport = require('egg-logger').Transport;

class UrllibTransport extends Transport {

  log(level, args, meta) {
    const msg = super.log(level, args, meta);
    return urllib.request('url?msg=' + msg);
  }
}

const logger = new Logger();
logger.set('remote', new UrllibTransport({
  level: 'DEBUG',
}));
logger.info('info');

Console logger level

set environment NODE_CONSOLE_LOGGRE_LEVEL = 'INFO' | 'WARN' | 'ERROR'

License

MIT

Contributors


fengmk2


dead-horse


popomore


atian25


mansonchor


whxaxes


Jeff-Tian


andy-ms


luckydrq


XadillaX


linrf


duqingyu


lix059


congyuandong


waitingsong

This project follows the git-contributor spec, auto updated at Sat Dec 10 2022 21:18:13 GMT+0800.

egg-logger's People

Contributors

amazingcaddy avatar atian25 avatar congyuandong avatar dead-horse avatar duqingyu avatar fengmk2 avatar jeff-tian avatar killagu avatar linrf avatar lix059 avatar luckydrq avatar mansonchor avatar popomore avatar semantic-release-bot avatar sjfkai avatar waitingsong avatar whxaxes avatar xadillax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

egg-logger's Issues

ContextLogger, AppLogger 需要支持自定义format

当涉及到特殊的日志分析系统对接时候,默认的logger无法满足需求。我们知道,文档里有customLogger等方式实现这种场景,但是:

  1. customLogger用起来太繁琐了,需要
this.ctx.getLogger('xxx').debug('xxxx')

不如this.logger,并且this.logger不能指定是哪个logger实现

  1. 已有大量的log历史工程,如果要改变日志格式需要大量修改代码。从直觉看这个是统一对logger做配置的事情,而不是大量修改工程代码迁移logger的事。因此希望默认logger也能像自定义logger一样支持format
  2. 自定义logger时候引入了很多新的配置项工作,默认logger不需要做的配置现在要拿代码亲自指定一遍:文件名、dir等等、等等

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.