@veloss/logger
v0.0.1
Published
Simple logger library
Downloads
4
Readme
@veloss/logger
A logger library for Veloss.
Usage
Install:
# npm
npm install @veloss/logger
# yarn
yarn add @veloss/logger
# pnpm
pnpm add @veloss/loggerImport:
// ESM / Typescript
import { createLogger, Logger } from "@veloss/logger";
// CommonJS
const { createLogger, Logger } = require("@veloss/logger");Example
Basic Usage
import { createLogger } from "@veloss/logger";
import { ConsoleTransport } from "@veloss/logger/transports";
const logger = createLogger({
category: ["root"],
transport: [new ConsoleTransport()],
});
const value = "Hello, World!";
logger.debug("A debug message.");
logger.debug`A debug message with ${value}.`;
logger.debug("A debug message with {value}.", { value });
logger.debug("A debug message with {value}.", () => ({
value: expensiveComputation(),
}));Event Emitter
Log events are emitted by the logger instance.
import { createLogger } from "@veloss/logger";
const logger = createLogger({
category: ["root"],
transport: [new ConsoleTransport()],
});
logger.onLog((record) => {
console.log(record); // logger record
});
logger.debug("A debug message.");
logger.debug`A debug message with ${value}.`;
logger.debug("A debug message with {value}.", { value });
logger.debug("A debug message with {value}.", () => ({
value: expensiveComputation(),
}));Custom Transport
Create a custom transport by extending the LoggerTransport class.
import { LoggerTransport } from '@veloss/logger/transports';
export class CustomTransport extends LoggerTransport<Custom, unknown> {
constructor(config) {
super(config);
}
send(record: LogRecord): void {
if (!this.enabled) {
return;
}
switch (record.level) {
case LogLevel.debug:
this.logger.debug(...this.formatter(record));
break;
case LogLevel.info:
this.logger.info(...this.formatter(record));
break;
case LogLevel.warn:
this.logger.warn(...this.formatter(record));
break;
case LogLevel.error:
this.logger.error(...this.formatter(record));
break;
case LogLevel.fatal:
this.logger.debug(...this.formatter(record));
break;
case LogLevel.trace:
this.logger.trace(...this.formatter(record));
break;
default:
break;
}
}
formatter(record: LogRecord): readonly unknown[] {
return [...];
}
}