@chtsinc/ch-logger
Version:
Reusable Winston-based logger for CH npm packages with support for console, file logging, and custom logger injection.
27 lines (26 loc) • 1.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const winston_1 = __importDefault(require("winston"));
const logLevel = process.env.LOG_LEVEL || 'info';
const logToFile = process.env.LOG_TO_FILE === 'true';
const logFileName = process.env.LOG_FILE || 'app.log';
const transports = [
new winston_1.default.transports.Console()
];
if (logToFile) {
transports.push(new winston_1.default.transports.File({ filename: logFileName }));
}
const defaultLogger = winston_1.default.createLogger({
level: logLevel,
format: winston_1.default.format.combine(winston_1.default.format.errors({ stack: true }), winston_1.default.format.timestamp(), winston_1.default.format.printf(({ level, message, timestamp, stack }) => {
const msg = typeof message === 'object' ? JSON.stringify(message) : message;
return stack
? `${timestamp} [${level.toUpperCase()}] ${msg}\n${stack}`
: `${timestamp} [${level.toUpperCase()}] ${msg}`;
})),
transports
});
exports.default = defaultLogger;