mirror of
https://gitlab.com/futo-org/fcast.git
synced 2025-08-18 21:32:50 +00:00
Receivers: Added unified logger module
This commit is contained in:
parent
7f9d7939bc
commit
b24b3f0c55
17 changed files with 351 additions and 117 deletions
197
receivers/common/web/Logger.ts
Normal file
197
receivers/common/web/Logger.ts
Normal file
|
@ -0,0 +1,197 @@
|
|||
|
||||
export enum LoggerType {
|
||||
BACKEND,
|
||||
FRONTEND,
|
||||
}
|
||||
|
||||
export class Logger {
|
||||
private static log4js = null;
|
||||
private static ipcLoggerTags = {
|
||||
trace: [],
|
||||
debug: [],
|
||||
info: [],
|
||||
warn: [],
|
||||
error: [],
|
||||
fatal: [],
|
||||
};
|
||||
private funcTable = {
|
||||
trace: console.trace,
|
||||
debug: console.debug,
|
||||
info: console.log,
|
||||
warn: console.warn,
|
||||
error: console.error,
|
||||
fatal: console.error,
|
||||
};
|
||||
|
||||
public static initialize(config: any) {
|
||||
// @ts-ignore
|
||||
if (TARGET === 'electron') {
|
||||
// @ts-ignore
|
||||
const electronAPI = __non_webpack_require__('electron');
|
||||
|
||||
// @ts-ignore
|
||||
Logger.log4js = __non_webpack_require__('log4js');
|
||||
Logger.log4js.configure(config);
|
||||
let logger = Logger.log4js.getLogger();
|
||||
|
||||
electronAPI.ipcMain.on('logger-trace', (event, value) => {
|
||||
if (!Logger.ipcLoggerTags.trace.includes(value.tag)) {
|
||||
Logger.ipcLoggerTags.trace.push(value.tag);
|
||||
logger = Logger.log4js.getLogger(value.tag);
|
||||
}
|
||||
|
||||
logger.info(value.message, ...value.optionalParams);
|
||||
});
|
||||
|
||||
electronAPI.ipcMain.on('logger-debug', (event, value) => {
|
||||
if (!Logger.ipcLoggerTags.debug.includes(value.tag)) {
|
||||
Logger.ipcLoggerTags.debug.push(value.tag);
|
||||
logger = Logger.log4js.getLogger(value.tag);
|
||||
}
|
||||
|
||||
logger.info(value.message, ...value.optionalParams);
|
||||
});
|
||||
|
||||
electronAPI.ipcMain.on('logger-info', (event, value) => {
|
||||
if (!Logger.ipcLoggerTags.info.includes(value.tag)) {
|
||||
Logger.ipcLoggerTags.info.push(value.tag);
|
||||
logger = Logger.log4js.getLogger(value.tag);
|
||||
}
|
||||
|
||||
logger.info(value.message, ...value.optionalParams);
|
||||
});
|
||||
|
||||
electronAPI.ipcMain.on('logger-warn', (event, value) => {
|
||||
if (!Logger.ipcLoggerTags.warn.includes(value.tag)) {
|
||||
Logger.ipcLoggerTags.warn.push(value.tag);
|
||||
logger = Logger.log4js.getLogger(value.tag);
|
||||
}
|
||||
|
||||
logger.warn(value.message, ...value.optionalParams);
|
||||
});
|
||||
|
||||
electronAPI.ipcMain.on('logger-error', (event, value) => {
|
||||
if (!Logger.ipcLoggerTags.error.includes(value.tag)) {
|
||||
Logger.ipcLoggerTags.error.push(value.tag);
|
||||
logger = Logger.log4js.getLogger(value.tag);
|
||||
}
|
||||
|
||||
logger.error(value.message, ...value.optionalParams);
|
||||
});
|
||||
|
||||
electronAPI.ipcMain.on('logger-fatal', (event, value) => {
|
||||
if (!Logger.ipcLoggerTags.fatal.includes(value.tag)) {
|
||||
Logger.ipcLoggerTags.fatal.push(value.tag);
|
||||
logger = Logger.log4js.getLogger(value.tag);
|
||||
}
|
||||
|
||||
logger.fatal(value.message, ...value.optionalParams);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
constructor(tag: string = 'default', type: LoggerType = LoggerType.FRONTEND) {
|
||||
// @ts-ignore
|
||||
if (TARGET === 'electron') {
|
||||
if (type === LoggerType.BACKEND) {
|
||||
// log4js should be initialized via the static method, but providing fallback when logger is used
|
||||
// before initialization as done currently by the Store module on startup.
|
||||
if (!Logger.log4js) {
|
||||
// @ts-ignore
|
||||
Logger.log4js = __non_webpack_require__('log4js');
|
||||
}
|
||||
|
||||
const logger = Logger.log4js.getLogger(tag);
|
||||
this.funcTable = {
|
||||
trace: (message?: any, ...optionalParams: any[]) => {
|
||||
logger.trace(message, ...optionalParams);
|
||||
},
|
||||
debug: (message?: any, ...optionalParams: any[]) => {
|
||||
logger.debug(message, ...optionalParams);
|
||||
},
|
||||
info: (message?: any, ...optionalParams: any[]) => {
|
||||
logger.info(message, ...optionalParams);
|
||||
},
|
||||
warn: (message?: any, ...optionalParams: any[]) => {
|
||||
logger.warn(message, ...optionalParams);
|
||||
},
|
||||
error: (message?: any, ...optionalParams: any[]) => {
|
||||
logger.error(message, ...optionalParams);
|
||||
},
|
||||
fatal: (message?: any, ...optionalParams: any[]) => {
|
||||
logger.fatal(message, ...optionalParams);
|
||||
},
|
||||
};
|
||||
}
|
||||
else if (type === LoggerType.FRONTEND) {
|
||||
// @ts-ignore
|
||||
const electronAPI = __non_webpack_require__('electron');
|
||||
|
||||
this.funcTable = {
|
||||
trace: (message?: any, ...optionalParams: any[]) => {
|
||||
console.trace(message, ...optionalParams);
|
||||
electronAPI.ipcRenderer.send('logger-trace', { tag: tag, message: message, optionalParams: optionalParams });
|
||||
},
|
||||
debug: (message?: any, ...optionalParams: any[]) => {
|
||||
console.debug(message, ...optionalParams);
|
||||
electronAPI.ipcRenderer.send('logger-debug', { tag: tag, message: message, optionalParams: optionalParams });
|
||||
},
|
||||
info: (message?: any, ...optionalParams: any[]) => {
|
||||
console.log(message, ...optionalParams);
|
||||
electronAPI.ipcRenderer.send('logger-info', { tag: tag, message: message, optionalParams: optionalParams });
|
||||
},
|
||||
warn: (message?: any, ...optionalParams: any[]) => {
|
||||
console.warn(message, ...optionalParams);
|
||||
electronAPI.ipcRenderer.send('logger-warn', { tag: tag, message: message, optionalParams: optionalParams });
|
||||
},
|
||||
error: (message?: any, ...optionalParams: any[]) => {
|
||||
console.error(message, ...optionalParams);
|
||||
electronAPI.ipcRenderer.send('logger-error', { tag: tag, message: message, optionalParams: optionalParams });
|
||||
},
|
||||
fatal: (message?: any, ...optionalParams: any[]) => {
|
||||
console.error(message, ...optionalParams);
|
||||
electronAPI.ipcRenderer.send('logger-fatal', { tag: tag, message: message, optionalParams: optionalParams });
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
} else if (TARGET === 'webOS' || TARGET === 'tizenOS') {
|
||||
|
||||
} else {
|
||||
// @ts-ignore
|
||||
console.warn(`Attempting to initialize logger on unsupported target: ${TARGET}`);
|
||||
}
|
||||
}
|
||||
|
||||
public trace(message?: any, ...optionalParams: any[]): void {
|
||||
this.funcTable.trace(message, ...optionalParams);
|
||||
}
|
||||
|
||||
public debug(message?: any, ...optionalParams: any[]): void {
|
||||
this.funcTable.debug(message, ...optionalParams);
|
||||
}
|
||||
|
||||
public info(message?: any, ...optionalParams: any[]): void {
|
||||
this.funcTable.info(message, ...optionalParams);
|
||||
}
|
||||
|
||||
public warn(message?: any, ...optionalParams: any[]): void {
|
||||
this.funcTable.warn(message, ...optionalParams);
|
||||
}
|
||||
|
||||
public error(message?: any, ...optionalParams: any[]): void {
|
||||
this.funcTable.error(message, ...optionalParams);
|
||||
}
|
||||
|
||||
public fatal(message?: any, ...optionalParams: any[]): void {
|
||||
this.funcTable.fatal(message, ...optionalParams);
|
||||
}
|
||||
|
||||
public shutdown() {
|
||||
// @ts-ignore
|
||||
if (TARGET === 'electron') {
|
||||
Logger.log4js.shutdown();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue