logger.js•3.64 kB
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = void 0;
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
class Logger {
level;
logFile;
logStream;
levelPriority = {
debug: 0,
info: 1,
warn: 2,
error: 3
};
constructor(level = 'info', logFile) {
this.level = level;
if (logFile) {
this.logFile = logFile;
this.initLogFile();
}
}
initLogFile() {
if (this.logFile) {
const logDir = path.dirname(this.logFile);
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true });
}
this.logStream = fs.createWriteStream(this.logFile, {
flags: 'a',
encoding: 'utf-8'
});
}
}
shouldLog(level) {
return this.levelPriority[level] >= this.levelPriority[this.level];
}
formatMessage(level, message, data) {
const timestamp = new Date().toISOString();
const dataStr = data ? ` ${JSON.stringify(data)}` : '';
return `[${timestamp}] [${level.toUpperCase()}] ${message}${dataStr}`;
}
writeLog(formattedMessage) {
console.error(formattedMessage);
if (this.logStream) {
this.logStream.write(formattedMessage + '\n');
}
}
debug(message, data) {
if (this.shouldLog('debug')) {
this.writeLog(this.formatMessage('debug', message, data));
}
}
info(message, data) {
if (this.shouldLog('info')) {
this.writeLog(this.formatMessage('info', message, data));
}
}
warn(message, data) {
if (this.shouldLog('warn')) {
this.writeLog(this.formatMessage('warn', message, data));
}
}
error(message, data) {
if (this.shouldLog('error')) {
this.writeLog(this.formatMessage('error', message, data));
}
}
setLevel(level) {
this.level = level;
}
close() {
if (this.logStream) {
this.logStream.end();
this.logStream = undefined;
}
}
}
exports.Logger = Logger;
//# sourceMappingURL=logger.js.map