48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
const logDir = path.join(process.cwd(), 'logs');
|
|
if (!fs.existsSync(logDir)) {
|
|
fs.mkdirSync(logDir, { recursive: true });
|
|
}
|
|
|
|
const LEVELS = {
|
|
ERROR: 'ERROR',
|
|
WARN: 'WARN',
|
|
INFO: 'INFO',
|
|
DEBUG: 'DEBUG'
|
|
};
|
|
|
|
const getCurrentTimestamp = () => {
|
|
return new Date().toISOString();
|
|
};
|
|
|
|
const writeLog = (level, message, meta = {}) => {
|
|
const timestamp = getCurrentTimestamp();
|
|
const logEntry = {
|
|
timestamp,
|
|
level,
|
|
message,
|
|
meta
|
|
};
|
|
|
|
console.log(`[${timestamp}] ${level}: ${message}`, meta);
|
|
|
|
const logFileName = `${new Date().toISOString().slice(0, 10)}.log`;
|
|
const logFilePath = path.join(logDir, logFileName);
|
|
|
|
fs.appendFile(logFilePath, JSON.stringify(logEntry) + '\n', (err) => {
|
|
if (err) {
|
|
console.error('Failed to write log to file:', err);
|
|
}
|
|
});
|
|
};
|
|
|
|
const logger = {
|
|
error: (message, meta) => writeLog(LEVELS.ERROR, message, meta),
|
|
warn: (message, meta) => writeLog(LEVELS.WARN, message, meta),
|
|
info: (message, meta) => writeLog(LEVELS.INFO, message, meta),
|
|
debug: (message, meta) => writeLog(LEVELS.DEBUG, message, meta)
|
|
};
|
|
|
|
export default logger; |