|
@@ -1,5 +1,6 @@
|
|
|
const fs = require('fs');
|
|
|
const path = require('path');
|
|
|
+const chalk = require('chalk');
|
|
|
|
|
|
class Logger {
|
|
|
constructor(logFilePath = null, level = 'INFO') {
|
|
@@ -20,11 +21,28 @@ class Logger {
|
|
|
level = level.toUpperCase();
|
|
|
if (this.logLevels.indexOf(level) >= this.logLevels.indexOf(this.level)) {
|
|
|
const timestamp = new Date().toISOString();
|
|
|
- const logMessage = `${timestamp} [${level}] ${message}\n`;
|
|
|
+ const logMessage = `${timestamp} [${level}] ${message}`;
|
|
|
+
|
|
|
+ // 控制台颜色
|
|
|
+ let coloredMessage;
|
|
|
+ switch (level) {
|
|
|
+ case 'INFO':
|
|
|
+ coloredMessage = chalk.white(logMessage);
|
|
|
+ break;
|
|
|
+ case 'WARN':
|
|
|
+ coloredMessage = chalk.yellow(logMessage);
|
|
|
+ break;
|
|
|
+ case 'ERROR':
|
|
|
+ coloredMessage = chalk.red(logMessage);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ coloredMessage = logMessage;
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log(coloredMessage);
|
|
|
|
|
|
- console.log(logMessage.trim());
|
|
|
if (this.logFilePath) {
|
|
|
- fs.appendFile(this.logFilePath, logMessage, (err) => {
|
|
|
+ fs.appendFile(this.logFilePath, `${logMessage}\n`, (err) => {
|
|
|
if (err) throw err;
|
|
|
});
|
|
|
}
|