Skip to content

An easily integratable logging library for nodejs for verbose request and app logging.

License

Notifications You must be signed in to change notification settings

kartik1998/omnia-logger

Repository files navigation

logger

An easy to integrate NodeJS library for easily setting up logging for an express app.

omnia-logger

omnia-logger

Request Logger

  • Generates request, response logs writes a file with those logs.
  • Generates a request id for each request session which is visible in app logs. (Read section below on app logger)

Usage

const { requestLogger } = require('omnia-logger');
const app = require('express')();
requestLogger(app, 'product-name', { filename: '/path/to/request.log' });
  • If you don't pass in a file name request logs are written in /var/log/omnia/requests directory by default. In that case ensure that you run your application with root permission i.e. use sudo before starting the application.
  • Sample request log will look something like:
{"meta":{"req":{"url":"/","headers":{"host":"localhost:8080","user-agent":"curl/7.64.1","accept":"*/*"},"method":"GET","httpVersion":"1.1","originalUrl":"/","query":{}},"res":{"body":{"id":"1628002145706-24bf4c89-eaff-4bf3-ad90-a6747e4cc8e8"}},"responseTime":0},"level":"info","message":"HTTP GET /"}
  • requestLogger logs each request by default. logged keys are: ip, id, headers and body.

App Logger

  • provides a variety of log levels i.e.:
FATAL: 'fatal',
ERROR: 'error',
WARN: 'warn',
TRACE: 'trace',
INFO: 'info',
DEBUG: 'debug',
  • It's singleton in nature hence needs to be initialized only once and can be used like const logger = require('omnia-logger').appLogger; in other files.

Usage

const { appLogger, requestLogger } = require('omnia-logger');
const app = require('express')();

const logger = new appLogger('product-name', 'path/to/app_log.log');
requestLogger(app, 'product-name', { filename: '/path/to/req_log.log' });
app.get('/', (req, res) => {
  logger.log(logger.LOG_LEVELS.INFO, 'successfull api call');
  logger.info('successfull api call'); // info, warn, error, debug, trace
  return res.json({ id: req.id });
});

app.listen(8080, () => console.log('listening on', 8080));
  • Sample app log will look like:
[2021-05-04T17:30:37.560Z] [INFO] [apac-logger] [Users-MacBook-Air.local] [20.2.0] [1628002145706-24bf4c89-eaff-4bf3-ad90-a6747e4cc8e8] successfull api call
  • App log format:
[DATE_ISO_FORMAT][LOG_LEVEL][PRODUCT_NAME][OS_HOSTNAME][OS_RELEASE][REQUEST_ID] LOG_MESSAGE

About

An easily integratable logging library for nodejs for verbose request and app logging.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published