logctx
Version:
A Pino-based logger with context-aware logging using async_hooks
44 lines (43 loc) • 1.47 kB
JavaScript
;
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
);