UNPKG

logctx

Version:

A Pino-based logger with context-aware logging using async_hooks

44 lines (43 loc) 1.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.baseLogger = void 0; const pino_1 = __importDefault(require("pino")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); // Set default log directory const logDir = path_1.default.resolve(process.cwd(), 'logs'); if (!fs_1.default.existsSync(logDir)) fs_1.default.mkdirSync(logDir); const format = (process.env.LOG_FORMAT || 'json').toLowerCase(); const toFile = process.env.LOG_TO_FILE === 'true'; const logLevel = process.env.LOG_LEVEL || 'info'; let destination; let transport; // 1. Log to pretty format for dev if (format === 'pretty') { transport = { targets: [ { target: 'pino-pretty', options: { colorize: true, translateTime: 'SYS:standard', }, }, ], }; } // 2. Log to file (JSON format) else if (toFile) { const logFile = path_1.default.join(logDir, 'app.log'); destination = pino_1.default.destination({ dest: logFile, sync: false }); } exports.baseLogger = (0, pino_1.default)({ name: process.env.APP_NAME || 'logctx', level: logLevel, ...(transport ? { transport } : {}), }, destination // optional second param for log file );