2024-06-06 13:12:04 +08:00
|
|
|
// const winston = require('winston');
|
|
|
|
|
import winston from 'winston';
|
|
|
|
|
import path from 'path';
|
|
|
|
|
import DailyRotateFile from 'winston-daily-rotate-file';
|
2024-08-03 12:46:12 +08:00
|
|
|
import moment from 'moment-timezone';
|
2024-06-06 13:12:04 +08:00
|
|
|
|
|
|
|
|
export class Logger {
|
|
|
|
|
constructor(log_folder) {
|
|
|
|
|
this.log_folder = log_folder;
|
|
|
|
|
this.logger = winston.createLogger({
|
|
|
|
|
level: 'info',
|
|
|
|
|
format: winston.format.combine(
|
2024-08-03 12:46:12 +08:00
|
|
|
winston.format.timestamp({
|
|
|
|
|
format: () => moment().tz('Asia/Shanghai').format('YYYY-MM-DD HH:mm:ss')
|
|
|
|
|
}),
|
2024-06-24 13:11:19 +08:00
|
|
|
winston.format.printf(info => `${(new Date()).toLocaleString()} [${info.level.toUpperCase()}] [${info.service}] ${info.message}`)
|
2024-06-06 13:12:04 +08:00
|
|
|
),
|
|
|
|
|
transports: [
|
|
|
|
|
new DailyRotateFile({
|
|
|
|
|
filename: path.resolve(this.log_folder, `LAITool-%DATE%.log`),
|
|
|
|
|
datePattern: 'YYYY-MM-DD',
|
|
|
|
|
zippedArchive: true,
|
|
|
|
|
maxSize: '10m',
|
|
|
|
|
maxFiles: '14d'
|
|
|
|
|
})
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
|
|
|
this.logger.add(new winston.transports.Console({
|
|
|
|
|
format: winston.format.simple(),
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存info级别的日志
|
|
|
|
|
* @param {*} service service 名称
|
|
|
|
|
* @param {*} message 消息
|
|
|
|
|
*/
|
|
|
|
|
info(service, message) {
|
|
|
|
|
this.logger.info(message, { service });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存error级别的日志
|
|
|
|
|
* @param {*} service service 名称
|
|
|
|
|
* @param {*} message 消息
|
|
|
|
|
*/
|
|
|
|
|
error(service, message) {
|
|
|
|
|
this.logger.error(message, { service });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存warn级别的日志
|
|
|
|
|
* @param {*} service service 名称
|
|
|
|
|
* @param {*} message 消息
|
|
|
|
|
*/
|
|
|
|
|
warn(service, message) {
|
|
|
|
|
this.logger.warn(message, { service });
|
|
|
|
|
}
|
|
|
|
|
}
|