fix: 移除chalk

This commit is contained in:
手瓜一十雪 2024-11-13 13:16:09 +08:00
parent 05291f34fb
commit aa9663d85e
2 changed files with 50 additions and 18 deletions

View File

@ -30,7 +30,6 @@
"@typescript-eslint/parser": "^8.3.0", "@typescript-eslint/parser": "^8.3.0",
"ajv": "^8.13.0", "ajv": "^8.13.0",
"async-mutex": "^0.5.0", "async-mutex": "^0.5.0",
"chalk": "^5.3.0",
"commander": "^12.1.0", "commander": "^12.1.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"eslint": "^9.14.0", "eslint": "^9.14.0",

View File

@ -1,7 +1,7 @@
import winston, { format, transports } from 'winston'; import winston, { format, transports } from 'winston';
import { truncateString } from '@/common/helper'; import { truncateString } from '@/common/helper';
import path from 'node:path'; import path from 'node:path';
import chalk from 'chalk'; import fs from 'node:fs';
import { AtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core'; import { AtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core';
export enum LogLevel { export enum LogLevel {
@ -43,12 +43,17 @@ export class LogWrapper {
}) })
), ),
transports: [ transports: [
new transports.File({ filename: logPath, level: 'debug' }), new transports.File({
filename: logPath,
level: 'debug',
maxsize: 5 * 1024 * 1024, // 5MB
maxFiles: 5
}),
new transports.Console({ new transports.Console({
format: format.combine( format: format.combine(
format.colorize(), format.colorize(),
format.printf(({ timestamp, level, message, ...meta }) => { format.printf(({ timestamp, level, message, ...meta }) => {
const userInfo = meta.userInfo ? `${chalk.magenta(meta.userInfo)} | ` : ''; const userInfo = meta.userInfo ? `${meta.userInfo} | ` : '';
return `${timestamp} [${level}] ${userInfo}${message}`; return `${timestamp} [${level}] ${userInfo}${message}`;
}) })
) )
@ -57,6 +62,39 @@ export class LogWrapper {
}); });
this.setLogSelfInfo({ nick: '', uin: '', uid: '' }); this.setLogSelfInfo({ nick: '', uin: '', uid: '' });
this.cleanOldLogs(logDir);
}
cleanOldLogs(logDir: string) {
const oneWeekAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
fs.readdir(logDir, (err, files) => {
if (err) {
this.logger.error('Failed to read log directory', err);
return;
}
files.forEach(file => {
const filePath = path.join(logDir, file);
fs.stat(filePath, (err, stats) => {
if (err) {
this.logger.error('Failed to get file stats', err);
return;
}
if (stats.mtime.getTime() < oneWeekAgo) {
fs.unlink(filePath, err => {
if (err) {
if (err.code === 'ENOENT') {
this.logger.warn(`File already deleted: ${file}`);
} else {
this.logger.error('Failed to delete old log file', err);
}
} else {
this.logger.info(`Deleted old log file: ${file}`);
}
});
}
});
});
});
} }
setFileAndConsoleLogLevel(fileLogLevel: LogLevel, consoleLogLevel: LogLevel) { setFileAndConsoleLogLevel(fileLogLevel: LogLevel, consoleLogLevel: LogLevel) {
@ -93,19 +131,14 @@ export class LogWrapper {
} }
formatMsg(msg: any[]) { formatMsg(msg: any[]) {
let logMsg = ''; return msg.map(msgItem => {
for (const msgItem of msg) {
if (msgItem instanceof Error) { if (msgItem instanceof Error) {
logMsg += msgItem.stack + ' '; return msgItem.stack;
continue;
} else if (typeof msgItem === 'object') { } else if (typeof msgItem === 'object') {
const obj = JSON.parse(JSON.stringify(msgItem, null, 2)); return JSON.stringify(truncateString(JSON.parse(JSON.stringify(msgItem, null, 2))));
logMsg += JSON.stringify(truncateString(obj)) + ' ';
continue;
} }
logMsg += msgItem + ' '; return msgItem;
} }).join(' ');
return logMsg;
} }
_log(level: LogLevel, ...args: any[]) { _log(level: LogLevel, ...args: any[]) {