UNPKG

@kotori-bot/logger

Version:
114 lines (89 loc) 2.82 kB
# @kotori-bot/logger Here are a simple logger,used mainly in Node.js environment,can record quickly log of application at runtime. ## 🚀 Advantage - Support output base on level of log,and custom filter function - Allow custom log handle logic - Template and format log improve read and parse - Support label marked origin of log - Number of transport divide,support any readable stream - Advanced colors and style (ConsoleTransport) ## 🧩 Usage > `new Logger(options: LoggerOptions)` ```typescript interface LoggerOptions { level: LoggerLevel; filter?: (data: LoggerData) => boolean;; label: string[]; transports: Transport | Transport[]; } ``` ## 🌰 Example ```typescript // ./src/example/example1.ts import Logger, { ConsoleTransport, LoggerLevel } from '@kotori-bot/logger'; const logger = new Logger({ level: LoggerLevel.TRACE, label: [], transports: new ConsoleTransport() }); logger.info(`base type:`, 'string', 233, null, undefined, true, false, 2.7182818284); logger.fatal(`normal object (json):`, { value: 1, content: 'content', extends: { value: 2 } }, [ 1, null, { value: false }, 'string' ]); const obj: any = {}; obj.value = obj; logger.error(`loop object:`, obj); logger.warn(`javascript special type:`, Symbol(233), BigInt('1234567891011121314151617181920')); logger.debug(`javascript object:`, Math, globalThis); logger.trace(`javascript constructor:`, Object, Function, String, Number, Boolean, Set, Map, Symbol, Error, Date); logger.label('label1').info( `javascript object instance`, new Map([ [1, 3], [2, 3], [3, 4], [4, 5] ]), new Set([1, 3, 3, 4, 5, 6, 7, 7, 8]), new Proxy({}, {}), new Error('a error'), new Date() ); function a() {} class A {} const b = () => {}; logger .label('label father') .label('label child') .warn(`function and class`, a, A, b, () => {}, new A()); ``` ![example1](https://pic.imgdb.cn/item/65c229869f345e8d032c998a.png) ## 🛠️ Transport ### Pre transports - IOTransport: - ConsoleTransport: pretty log input to console - FileTransport: save log to file system ### Custom transport Reference source of pre-tansports,here are a simple example: ```typescript import { LoggerData, Transport } from '@kotori-bot/logger'; interface MyTransportConfig { /* ... */ } export class MyTransport extends Transport<MyTransportConfig> { handle(data: LoggerData) { /* here are some log handle logic... */ } escaper = (...args: unknown): string => { /* if need,you can custom escaper */ /* finally return a string as key msg of LoggerData */ /* it's optional */ }; } export default MyTransport; ``` ## 📒 Reference - [Kotori Docs](https://kotori.js.org/)