UNPKG

@sentzunhat/zacatl

Version:

A modular, high-performance TypeScript microservice framework for Node.js, featuring layered architecture, dependency injection, and robust validation for building scalable APIs and distributed systems.

84 lines (73 loc) 1.95 kB
import pino from "pino"; import { getConfigOrThrow } from "./configuration"; const defaultLogger: pino.BaseLogger = pino({ level: process.env["LOG_LEVEL"] ?? "info", transport: { target: "pino-pretty", options: { colorize: true, }, }, formatters: { bindings: (bindings) => { return { unique: bindings["pid"], service: getConfigOrThrow<string>("SERVICE_NAME"), environment: getConfigOrThrow<string>("NODE_ENV"), app: { version: getConfigOrThrow<string>("APP_VERSION"), environment: getConfigOrThrow<string>("APP_ENV"), }, host: bindings["hostname"], }; }, level: (label) => { return { level: label.toLocaleLowerCase() }; }, }, }); export type LoggerInput = | { logData?: unknown; metadata?: unknown; } | undefined; const logger = { log: (message: string, input?: LoggerInput): void => { console.log(message, { logData: input?.logData, metadata: input?.metadata, }); }, info: (message: string, input?: LoggerInput): void => { defaultLogger.info( { logData: input?.logData, metadata: input?.metadata }, message ); }, trace: (message: string, input?: LoggerInput): void => { defaultLogger.trace( { logData: input?.logData, metadata: input?.metadata }, message ); }, warn: (message: string, input?: LoggerInput): void => { defaultLogger.warn( { logData: input?.logData, metadata: input?.metadata }, message ); }, error: (message: string, input?: LoggerInput): void => { defaultLogger.error( { logData: input?.logData, metadata: input?.metadata }, message ); }, fatal: (message: string, input?: LoggerInput): void => { defaultLogger.fatal( { logData: input?.logData, metadata: input?.metadata }, message ); }, }; export { defaultLogger, logger };