70 lines
1.6 KiB
JavaScript
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 }; |