Zerg
Lightweight logging library for apps and libs
Futures
- Zero dependencies
- TypeScript support
- Easy to use
- Custom listeners/transports
- Support Node.js and Browsers
Getting started
Installation
npm i --save zerg
or
yarn add zerg
Usage
Make module logger.js
:
;; const logger = zerg; // Add console loggerconst listener = zerg; logger; ;
Make your module and import logger.js
:
; const log = ; log;log;log;log;log;
Result:
API
Types
type TExtendedData = Record<string, any>;
type TLogMessage = {
timestamp: number;
loggerName: string;
moduleName: string;
level: TLogLevel;
message: string;
extendedData?: TExtendedData
};
type LogLevel = 'verbose' | 'debug' | 'info' | 'warn' | 'error';
type Listener = (log: TLogMessage) => void;
zerg.createLogger(): Logger - Create logger instance
zerg.createListener(params): LogListener - Create listener for logger
- params.handler: (logMessage: TLogMessage) => void;
- params.filter?: (logMessage: TLogMessage) => boolean; (optional)
- params.levels?: LogLevel; (optional)
logger.addListener(listener: LogListener)
; const logger = zerg; const listener = zerg; logger; logger;logger;logger; /* console{ timestamp: 1467967421933, level: 'info', moduleName: 'myModule', message: 'Info message', extendedData: {foo: 'bar'},}*/
Use filter - Listen messages only from "Sarah" module
; const logger = zerg; const listener = zerg; logger; logger;logger;logger; /* console{ timestamp: 1467967421933, level: 'info', moduleName: 'myModule', message: 'Info message', extendedData: {foo: 'bar'},}*/
removeListener(LogListener): void;
removeAllListeners(): void;
module(moduleName: string): LoggerModule;
getModule(moduleName: string): LoggerModule | null;
getModules(): Record<string, LoggerModule>;
Other Examples
Sentry transport
;const logger = zerg; const SENTRY_LEVEL_MAP = info: 'info' warn: 'warning' error: 'error' fatal: 'error'; { const level = SENTRY_LEVEL_MAPlogMessagelevel; Sentry;} const listener = zerg; logger;
Remote debug transport
It is be useful for debug when browser (or device) doesn't provide tool: Android with default browser, WinPhone, SmartTV.
At browser:
;const logger = zerg; { const req = ; req; req; req;} const listener = zerg; logger;
Don't forget, host (http://myhost.com:3000/log) must be reachable from device.
At server you may use express:
const express = ;const bodyParser = ; const app = ;app; // for parsing application/json app; app;