loggnog is a lightweight logging library for Node.js, designed to print your logs as clear and color-coded as possible both in AWS CloudWatch and in your local terminal.
I have been using winston, a great and versatile module and pretty customizable. But from some point it made more sense to me to create a lightweight alternative customized just for my local + AWS logging needs rather than to keep tweaking winston.
-
The module will print nicely formatted logs both in local and AWS environments (given
isAws
is configured dynamically to be truthy in an AWS environment only). That includes environment-appropriate color coding of object keys and values, as well as the capability to view JSON objects in with human-readable indentation. -
Since AWS logs are JSON objects, it is impossible to color strings there, so I am using little emoji squares and triangles to add a little color-coding.
-
Following log methods are available:
- error
- problem
- warn
- info
- debug
-
debug
level logs may be prevented from getting logged ifisDebugMode
is falsy -
The introduction of
problem
level logs aims to capture error responses resulting from certain API requests. These errors signify expected behavior on the server but may present as issues for the client. Typically,problem
level logs correspond to HTTP status code 400, whileerror
level logs are reserved for HTTP status code 500 responses.
const { Loggnog } = require('loggnog');
// configure
const logx = new Loggnog({ isAws: true, isDebugMode: false });
// Log a message
logx.info('This is a log message');
// Debug message
// This message will be logged inly if isDebugMode is truthy above
logger.debug('FOO_PAYLOAD', { foo: 'bar' });
// Log an error
logx.error('OTHER_ERROR', new Error('Something went wrong'));
Key | Default | Description |
---|---|---|
isAws | false | Tell the module (programmatically) if it runs in the AWS environment to optimize for that environment. Optimized for local console by default |
isDebugMode | false | if true logx.debug messages will be logged to the terminal |
- Log methods can accept 1 or 2 arguments, and the first one must always be a regular string
- Extremely opinionated, no room for customization
- No equivalent for console.log, use logx.info instead