/log

Personal node logging module

Primary LanguageTypeScriptMIT LicenseMIT

@frasermcc/log

A super simple log.

npm version

npm i @frasermcc/log

Usage

import Log, { Level } from "@frasermcc/log";

// Set log level to trace
Log.level(Level.TRACE);

// White text.
Log.trace("Hello World");

// Green text.
Log.info("Hello World");

// Yellow text.
Log.warn("Hello World");

// Red text.
// Will print a stack trace.
Log.error("Hello World");

// White text on red background.
// Will print a stack trace.
// Will exit the application.
Log.critical("Hello World");

General output format is as follows:

[1:37:58 AM]  [INFO]      Hello World
[1:37:58 AM]  [WARN]      Hello World
[1:37:58 AM]  [ERROR]     Hello World
    at Function.Log.error (D:\Projects\f-log\src\index.ts:72:27)
    etc...

Other Utilities

Trace

The @Trace decorator can be used on class methods as follows:

class Test {
  @Trace()
  public test(a: any, b: any) {
    return "hello!";
  }
}

new Test().test(5, { a: 5 });

with the output:

[2:04:35 AM]  [TRACE]     [Test] test(args) => result in 0.0130ms.
  Arguments: [ 5, { a: 5 } ]
  Returns: hello!

Note that the log level of the @Trace decorator is set to TRACE by default. It can be changed by passing a Level to the decorator:

@Trace(Level.INFO)

Persist

Logs can be persisted to a file.

// save logs to file named myLog.log
Log.persist("myLog.log");

// default name is the Log level with the log file extension.
// save logs to file named WARN.log
Log.level(Level.WARN)
Log.persist()

Block

The Log#block(message, color) method can be used to print a block of text.

import Log, { chalk } from ".";

Log.block("Hello", chalk.blue);

with the output:

  _   _      _ _
 | | | | ___| | | ___
 | |_| |/ _ \ | |/ _ \
 |  _  |  __/ | | (_) |
 |_| |_|\___|_|_|\___/