Logger Helper

v1.0.0

Static and event-driven logging utility that supports multiple log levels and real-time log listeners via a onLog() API.
It allows you to intercept, modify, or cancel logs and even react to them (e.g., for telemetry or debugging) in a centralized way.

Usage

import { LoggerHelper, LoggerType, type LoggerPayload } from '@oardi/ts-utils';

// simple logging
LoggerHelper.info('App started', { env: 'dev' });
LoggerHelper.warn('Low disk space', { freeBytes: 1024 });

// turning off all logging
LoggerHelper.setEnabled(false);
LoggerHelper.info('this will not be printed');
LoggerHelper.setEnabled(true);

Basic Observer

const unsubscribe = LoggerHelper.onLog(payload => {
	// payload: { type, args, timestamp }
	// z. B. send telemetry
	fetch('/api/log', { method: 'POST', body: JSON.stringify(payload) }).catch(() => {});
});

// unsubscribe from onLog
unsubscribe();

Filter Logs

// prevent debug messages from reaching console
LoggerHelper.onLog(p => {
	if (p.type === 'debug') return false;
});

A false return value only vetoes the console call. Every registered listener still receives the payload.

Quick Reference

// Log Levels
LoggerHelper.log(...args: unknown[]): void;
LoggerHelper.info(...args: unknown[]): void;
LoggerHelper.warn(...args: unknown[]): void;
LoggerHelper.debug(...args: unknown[]): void;
LoggerHelper.error(...args: unknown[]): void;

// Listener
const off = LoggerHelper.onLog((payload) => { /* ... */ }, /* once? */ false);
// unsubscribe
off();

Payload

type LoggerPayload = {
	type: LoggerType; // 'log' | 'info' | 'warn' | 'debug' | 'error'
	args: unknown[]; // original Log-Argument
	timestamp: string; // ISO timestamp
};

Previous:Helpers

← LocalStorage Helper

Next:Helpers

Screen Helper →