0.1.2 • Published 2 years ago

@teakit/logger v0.1.2

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

@teakit/logger

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 @teakit/logger

Usage

Create a Logger and add a file Transport.

const { Logger, FileTransport, ConsoleTransport } = require("@teakit/logger");

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 { Transport } = require("@teakit/logger");
const urllib = require("urllib");

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'