logj

2.1.2 • Public • Published

logj

Overview

This package overloads built-in node console.log and console.error methods to log everything as JSON.
This makes easier to search into logs files in a structured way using jq when using a docker container and log aggregators (i.e: cloudwatch, kibana, etc).

Usage:

Start node with logj as entrypoint:

node -r logj index.js

Every console.log and console.error statement is print as JSON.

Behaviour:

console.log('hello');
// "hello"

console.log({ hello: 'world' });
// {"hello":"world"}

console.log({ hello: 'world' }, 'another argument');
// [0:{"hello":"world"},1:"another argument"]

Behaviour with LOGJ=m:

console.log('hello');
// {"std":"output","time":"2020-07-19T16:17:12Z","name":"hello-world","version":"1.0.4","out":"hello"}

console.log({ hello: 'world' });
// {"std":"output","time":"2020-07-19T16:17:12Z","name":"hello-world","version":"1.0.4","out":{"hello":"world"}}

console.error(new Error('ops'));
// {"std":"error","time":"2020-07-19T16:17:12Z","name":"hello-world","version":"1.0.4","out":{"stack":"Error: ops\n    at Object.<anonymous> (/Users/damians/Desktop/logj/test/test.js:9:15)\n    at Module._compile (internal/modules/cjs/loader.js:1201:30)\n    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1221:10)\n    at Module.load (internal/modules/cjs/loader.js:1050:32)\n    at Function.Module._load (internal/modules/cjs/loader.js:938:14)\n    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)\n    at internal/main/run_main_module.js:17:47","message":"ops"}}

Options

Behaviour can be changed passing a LOGJ environment variable:

  • LOGJ=p: pretty-print JSON
  • LOGJ=m: add the following additional properties to log lines:
    • std: either output or error
    • time: ISO8601 date
    • name: package name
    • version: package version
    • aforementioned properties are not added to log statement if there's an overlap between them and log properties
  • LOGJ=pm to enable both

A global console.logjReplacer may be defined to provide a custom json replacer applied for every JSON line generated.

Readme

Keywords

none

Package Sidebar

Install

npm i logj

Weekly Downloads

13

Version

2.1.2

License

MIT

Unpacked Size

9.74 kB

Total Files

11

Last publish

Collaborators

  • damianobarbati