enterprise_assest_managemen.../node_api/utils/logger.js

70 lines
1.6 KiB
JavaScript

// node_api/utils/logger.js
const fs = require('fs');
const path = require('path');
class Logger {
constructor() {
this.logDir = path.join(__dirname, '../logs');
this.ensureLogDirectory();
}
ensureLogDirectory() {
if (!fs.existsSync(this.logDir)) {
fs.mkdirSync(this.logDir, { recursive: true });
}
}
getLogFileName(type = 'general') {
const date = new Date().toISOString().split('T')[0];
return path.join(this.logDir, `${type}-${date}.log`);
}
formatMessage(level, message, data = null) {
const timestamp = new Date().toISOString();
const logEntry = {
timestamp,
level,
message,
...(data && { data })
};
return JSON.stringify(logEntry);
}
writeLog(level, message, data = null, logType = 'general') {
const logMessage = this.formatMessage(level, message, data);
const logFile = this.getLogFileName(logType);
// Write to file
fs.appendFileSync(logFile, logMessage + '\n');
// Also log to console
console.log(`[${level.toUpperCase()}] ${message}`, data || '');
}
info(message, data = null) {
this.writeLog('info', message, data);
}
error(message, data = null) {
this.writeLog('error', message, data);
}
warn(message, data = null) {
this.writeLog('warn', message, data);
}
debug(message, data = null) {
this.writeLog('debug', message, data);
}
job(message, data = null) {
this.writeLog('info', message, data, 'jobs');
}
depreciation(message, data = null) {
this.writeLog('info', message, data, 'depreciation');
}
}
const logger = new Logger();
module.exports = { logger };