You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/wai-server/utils/logger.util.js

56 lines
1.6 KiB
JavaScript

const log4js = require('log4js');
const logger = log4js.getLogger();
6 months ago
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;
6 months ago
module.exports.logger = logger;
module.exports.sqlLogger = sqlLogger;
module.exports.getUserLogger = getUserLogger;
6 months ago
module.exports.default = logger;