const log4js = require('log4js'); const logger = log4js.getLogger(); const sqlLogger = log4js.getLogger('SQL'); // 用户日志 // 按 用户ID 和 登录日期 区分 const pino = require('pino'); const path = require('path'); const fs = require('fs'); const userLoggers = {}; // Store user loggers function getUserLogger(_userId) { const userId = _userId.replace('+', ''); if (userLoggers[userId]) { return userLoggers[userId]; } const today = new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toISOString().slice(0, 10); // YYYY-MM-DD const logDirectory = path.join(__dirname, '../logs'); const logFile = path.join(logDirectory, `user.${userId}.${today}.log`); // Ensure the logs directory exists fs.mkdirSync(logDirectory, { recursive: true }); // Create or open the log file stream // const logStream = fs.createWriteStream(logFile, { flags: 'a' }); // 'a' for append mode const dest = pino.destination(logFile); const logger = pino( { level: 'info', formatters: { level: label => { return { level: label }; }, }, // timestamp: pino.stdTimeFunctions.isoTime, timestamp: () => { return `,"time":"${new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toISOString()}"`; // GMT+8 }, }, dest, ); userLoggers[userId] = logger; return logger; } module.exports = logger; module.exports.logger = logger; module.exports.sqlLogger = sqlLogger; module.exports.getUserLogger = getUserLogger; module.exports.default = logger;