47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// 简单 logger,和 Go 端行为接近;若设置 LOG_FILE 则同时追加到该文件(便于打包 exe 双击时查日志)
|
|
function log(level, msg, ...args) {
|
|
const time = new Date().toISOString();
|
|
let rest = '';
|
|
if (args.length && typeof args[0] === 'object' && args[0] !== null && !Array.isArray(args[0])) {
|
|
rest = ' ' + JSON.stringify(args[0]);
|
|
} else if (args.length) {
|
|
rest = ' ' + args.map((a) => (typeof a === 'object' ? JSON.stringify(a) : String(a))).join(' ');
|
|
}
|
|
const line = `${time} [${level}] ${msg}${rest}\n`;
|
|
try {
|
|
console.log(line.trimEnd());
|
|
} catch (_) {}
|
|
const logFile = process.env.LOG_FILE;
|
|
if (logFile) {
|
|
try {
|
|
const dir = path.dirname(logFile);
|
|
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
|
|
fs.appendFileSync(logFile, line);
|
|
} catch (_) {}
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
info(msg, ...args) {
|
|
log('INFO', msg, ...args);
|
|
},
|
|
infow(msg, ...args) {
|
|
log('INFO', msg, ...args);
|
|
},
|
|
warn(msg, ...args) {
|
|
log('WARN', msg, ...args);
|
|
},
|
|
warnw(msg, ...args) {
|
|
log('WARN', msg, ...args);
|
|
},
|
|
error(msg, ...args) {
|
|
log('ERROR', msg, ...args);
|
|
},
|
|
errorw(msg, ...args) {
|
|
log('ERROR', msg, ...args);
|
|
},
|
|
};
|