mirror of
https://github.com/certd/certd.git
synced 2026-04-14 04:20:52 +08:00
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
import log4js, { LoggingEvent, Logger } from 'log4js';
|
|
|
|
const OutputAppender = {
|
|
configure: (config: any, layouts: any, findAppender: any, levels: any) => {
|
|
let layout = layouts.basicLayout;
|
|
if (config.layout) {
|
|
layout = layouts.layout(config.layout.type, config.layout);
|
|
}
|
|
function customAppender(layout: any, timezoneOffset: any) {
|
|
return (loggingEvent: LoggingEvent) => {
|
|
if (loggingEvent.context.outputHandler?.write) {
|
|
const text = `${layout(loggingEvent, timezoneOffset)}\n`;
|
|
loggingEvent.context.outputHandler.write(text);
|
|
}
|
|
};
|
|
}
|
|
return customAppender(layout, config.timezoneOffset);
|
|
},
|
|
};
|
|
|
|
export function resetLogConfigure() {
|
|
// @ts-ignore
|
|
log4js.configure({
|
|
appenders: { std: { type: 'stdout' }, output: { type: OutputAppender } },
|
|
categories: { default: { appenders: ['std'], level: 'info' }, pipeline: { appenders: ['std', 'output'], level: 'info' } },
|
|
});
|
|
}
|
|
resetLogConfigure();
|
|
export const logger = log4js.getLogger('default');
|
|
|
|
export function buildLogger(write: (text: string) => void) {
|
|
const logger = log4js.getLogger('pipeline');
|
|
logger.addContext('outputHandler', {
|
|
write,
|
|
});
|
|
return logger;
|
|
}
|
|
|
|
export type ILogger = Logger;
|