npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

nodejs-custom-logger-package

v1.0.2

Published

A comprehensive logging toolkit for Node.js applications, featuring CloudWatch integration, daily log rotation, and Express compatibility.

Readme

Bookingjini Logger Package

A versatile logging library tailored for Bookingjini, offering robust logging functionalities with support for console, file, and AWS CloudWatch. Designed to be easy to use and scalable for various projects within the organization.


Features

  • Console Logging: Outputs logs to the console.
  • File Logging: Saves logs to rotating daily files.
  • CloudWatch Logging: Sends logs to AWS CloudWatch.
  • Customizable Log Levels: Supports info, error, and warn levels.
  • Trace ID Support: Includes trace IDs for better debugging and traceability.
  • Request Logging: Middleware for logging detailed HTTP request and response data.

Installation

Install the package via npm:

npm install nodejs-custom-logger-package

Usage

1. Creating a Logger

To create an application-wide logger, use the createAppLogger function with a configuration object.

import { createAppLogger } from "nodejs-custom-logger-package";

const logger = createAppLogger({
  console: {
    enabled: true,
  },
  file: {
    enabled: true,
    options: {
      dirname: "logs/application",
      filename: "app-%DATE%.log",
      datePattern: "YYYY-MM-DD",
      maxFiles: "14d",
    },
  },
  cloudWatch: {
    enabled: true,
    options: {
      region: "us-east-1",
      accessKeyId: "your-access-key",
      secretAccessKey: "your-secret-key",
      logGroupName: "application-logs",
      logStreamName: "app-stream",
    },
  },
});

2. Logging Messages

The logger provides leveled logging methods:

logger.info("Application started successfully");
logger.error({
  message: "An error occurred",
  traceId: "12345",
  meta: { key: "value" },
});
logger.warn("This is a warning message");

3. Request Logging Middleware

Use the requestLogger middleware to log HTTP requests and responses in your Express application.

import express from "express";
import { requestLogger } from "nodejs-custom-logger-package";

const app = express();

app.use(requestLogger);

app.get("/", (req, res) => {
  res.send("Hello, Bookingjini!");
});

app.listen(3000, () => console.log("Server is running on port 3000"));

4. AWS CloudWatch Integration

Configure CloudWatch in the LoggerConfig to enable log streaming to AWS:

const logger = createAppLogger({
  cloudWatch: {
    enabled: true,
    options: {
      region: "your-region",
      accessKeyId: "your-access-key-id",
      secretAccessKey: "your-secret-access-key",
      logGroupName: "your-log-group",
      logStreamName: "your-log-stream",
    },
  },
});

Configuration Options

The logger accepts the following configuration options:

LoggerConfig

| Option | Type | Description | | ------------ | ---------------------- | ------------------------------------- | | console | { enabled: boolean } | Enable/disable console logging. | | file | FileTransportConfig | Configure file-based logging. | | cloudWatch | CloudWatchConfig | Configure AWS CloudWatch integration. |

CloudWatchConfig

| Field | Type | Description | | ----------------- | -------- | ---------------------------------- | | region | string | AWS region. | | accessKeyId | string | AWS access key ID. | | secretAccessKey | string | AWS secret access key. | | logGroupName | string | Name of the CloudWatch log group. | | logStreamName | string | Name of the CloudWatch log stream. |


Example Project

Here’s an example integrating all features:

import { createAppLogger, requestLogger } from "@bookingjini/logger";
import express from "express";

const logger = createAppLogger({
  console: { enabled: true },
  file: { enabled: true, options: { dirname: "logs" } },
  cloudWatch: {
    enabled: true,
    options: {
      region: "us-east-1",
      accessKeyId: "your-access-key",
      secretAccessKey: "your-secret-key",
      logGroupName: "example-logs",
      logStreamName: "example-stream",
    },
  },
});

const app = express();

app.use(requestLogger);

app.get("/", (req, res) => {
  logger.info("Root endpoint hit");
  res.send("Welcome to Bookingjini Logger!");
});

app.listen(3000, () => {
  logger.info("Server running on port 3000");
});

License

This package is an internal tool developed by Bookingjini and is not meant for public use.