multi-downloader-nx_mirror/modules/log.ts

69 lines
1.5 KiB
TypeScript

import fs from 'fs';
import path from 'path';
import { workingDir } from './module.cfg-loader';
import log4js from 'log4js';
const logFolder = path.join(workingDir, 'logs');
const latest = path.join(logFolder, 'latest.log');
const makeLogFolder = () => {
if (!fs.existsSync(logFolder)) fs.mkdirSync(logFolder, { recursive: true });
if (fs.existsSync(latest)) {
const stats = fs.statSync(latest);
fs.renameSync(latest, path.join(logFolder, `${stats.mtimeMs}.log`));
}
};
const makeLogger = () => {
global.console.log =
global.console.info =
global.console.warn =
global.console.error =
global.console.debug =
(...data: any[]) => {
console.info(data.length >= 1 ? data.shift() : '', ...data);
};
makeLogFolder();
log4js.configure({
appenders: {
console: {
type: 'console',
layout: {
type: 'pattern',
pattern: process.env.isGUI === 'true' ? '%[%x{info}%m%]' : '%x{info}%m',
tokens: {
info: (ev) => {
return ev.level.levelStr === 'INFO' ? '' : `[${ev.level.levelStr}] `;
}
}
}
},
file: {
type: 'file',
filename: latest,
layout: {
type: 'pattern',
pattern: '%x{info}%m',
tokens: {
info: (ev) => {
return ev.level.levelStr === 'INFO' ? '' : `[${ev.level.levelStr}] `;
}
}
}
}
},
categories: {
default: {
appenders: ['console', 'file'],
level: 'all'
}
}
});
};
const getLogger = () => {
if (!log4js.isConfigured()) makeLogger();
return log4js.getLogger();
};
export const console = getLogger();