Categories
javascript

Lazy/conditional logging in JavaScript

I had some trace logs that I only wanted to enable conditionally, eg only when the logging level was set to TRACE.

I couldn’t find a node.js library that enables this kind of logging. For each of them, the logger always evaluated the string input.

Logger.trace(`long running task ${longRunningTask()}`)

The longRunningTask was always ran, even if trace logging was not enabled.

Solution

I created a fork from js-logger, which you can call with a function parameter

Logger.trace(() => `long running task ${longRunningTask()}`)

The logger checks the log level, and only then calls the function. This way the <meta charset="utf-8">longRunningTask is only called when trace logging is enabled

Use it in your project

Add my js-logger fork with

yarn add 'js-logger@https://github.com/tonisives/js-logger'