Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TinyLogs

Minimal request-scoped logging SDK for Node.js and Express.

TinyLogs helps you create structured, grouped, colorful logs with request tracking using AsyncLocalStorage.


Features

  • Request-scoped logging
  • Express middleware support
  • Async context tracking
  • Structured logs
  • Colored CLI output
  • Tiny bundle size
  • TypeScript support
  • ESM + CommonJS support
  • Custom error handling

Installation

npm i @yash-devop/tinylogs

Peer dependency:

npm i express

Quick Start

Setup middleware

import express from "express";
import { tinylogs } from "@yash-devop/tinylogs";

const app = express();

app.use(express.json());
app.use(tinylogs());

Logging inside routes

import { useTinyLogs } from "@yash-devop/tinylogs";

app.get("/", async (req, res) => {
  const logger = useTinyLogs();

  logger.set({
    user: "Yash",
    role: "Fullstack Engineer",
  });

  logger.warn("Payment service latency detected");

  res.json({ success: true });
});

Example Output

April 26 at 11:14:58 PM [INFO] GET / in 56 ms
├─ requestId: 63cb2b9d-3b1d-46d4-b2e7-8e3f4c9c6e13
├─ user: Yash
├─ role: Fullstack Engineer
├─ Payment service latency detected

Error Logging

TinyLogs includes a built-in custom error class.

import { TinyLogError } from "@yash-devop/tinylogs";

throw new TinyLogError({
  message: "Payment Failed",
  status: 503,
  why: "Invalid payment id",
  fix: "Retry with valid payment credentials",
});

Error Middleware

import { errorMiddleware } from "@yash-devop/tinylogs";

app.use(errorMiddleware);

API

tinylogs()

Express middleware that initializes request-scoped logging.


useTinyLogs()

Returns logger methods:

const logger = useTinyLogs();

Methods

logger.set()

logger.set({
  user: "Yash",
});

logger.warn()

logger.warn("Something looks suspicious");

logger.error()

Used internally by TinyLogs error handling.


TypeScript Support

TinyLogs ships with built-in TypeScript types.

No additional typings required.


Example Project Structure

src/
├── middleware/
├── logger/
├── routes/
└── server.ts

Why TinyLogs?

Most loggers are either:

  • too noisy
  • hard to read
  • overly configurable
  • difficult to setup

TinyLogs focuses on:

  • simplicity
  • request grouping
  • clean developer experience
  • readable terminal output

Roadmap

  • Pretty log themes
  • File transports
  • JSON logging mode
  • Better async log grouping
  • Framework adapters
  • Browser/devtools support

License

MIT

About

Tinylogs - a logger sdk that provides contexts to your system

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages