Centralize log file and refactor desktop logging
- Migrate to `electron-log` v5.X.X, centralizing log files to adhere to best-practices. - Add critical event logging in the log file. - Replace `ElectronLog` type with `LogFunctions` for better abstraction. - Unify log handling in `desktop-runtime-error` by removing `renderer.log` due to `electron-log` v5 changes. - Update and extend logger interfaces, removing 'I' prefix and adding common log levels to abstract `electron-log` completely. - Move logger interfaces to the application layer as it's cross-cutting concern, meanwhile keeping the implementations in the infrastructure layer. - Introduce `useLogger` hook for easier logging in Vue components. - Simplify `WindowVariables` by removing nullable properties. - Improve documentation to clearly differentiate between desktop and web versions, outlining specific features of each.
This commit is contained in:
12
tests/unit/shared/Stubs/LoggerFactoryStub.ts
Normal file
12
tests/unit/shared/Stubs/LoggerFactoryStub.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { Logger } from '@/application/Common/Log/Logger';
|
||||
import { LoggerFactory } from '@/application/Common/Log/LoggerFactory';
|
||||
import { LoggerStub } from './LoggerStub';
|
||||
|
||||
export class LoggerFactoryStub implements LoggerFactory {
|
||||
public logger: Logger = new LoggerStub();
|
||||
|
||||
public withLogger(logger: Logger): this {
|
||||
this.logger = logger;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,32 @@
|
||||
import { ILogger } from '@/infrastructure/Log/ILogger';
|
||||
import { Logger } from '@/application/Common/Log/Logger';
|
||||
import { StubWithObservableMethodCalls } from './StubWithObservableMethodCalls';
|
||||
|
||||
export class LoggerStub extends StubWithObservableMethodCalls<ILogger> implements ILogger {
|
||||
export class LoggerStub extends StubWithObservableMethodCalls<Logger> implements Logger {
|
||||
public warn(...params: unknown[]): void {
|
||||
this.registerMethodCall({
|
||||
methodName: 'warn',
|
||||
args: params,
|
||||
});
|
||||
}
|
||||
|
||||
public error(...params: unknown[]): void {
|
||||
this.registerMethodCall({
|
||||
methodName: 'error',
|
||||
args: params,
|
||||
});
|
||||
}
|
||||
|
||||
public debug(...params: unknown[]): void {
|
||||
this.registerMethodCall({
|
||||
methodName: 'debug',
|
||||
args: params,
|
||||
});
|
||||
}
|
||||
|
||||
public info(...params: unknown[]): void {
|
||||
this.registerMethodCall({
|
||||
methodName: 'info',
|
||||
args: params,
|
||||
});
|
||||
console.log(...params);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { OperatingSystem } from '@/domain/OperatingSystem';
|
||||
import { ILogger } from '@/infrastructure/Log/ILogger';
|
||||
import { Logger } from '@/application/Common/Log/Logger';
|
||||
import { ISystemOperations } from '@/infrastructure/SystemOperations/ISystemOperations';
|
||||
import { WindowVariables } from '@/infrastructure/WindowVariables/WindowVariables';
|
||||
import { SystemOperationsStub } from './SystemOperationsStub';
|
||||
@@ -8,18 +8,18 @@ import { LoggerStub } from './LoggerStub';
|
||||
export class WindowVariablesStub implements WindowVariables {
|
||||
public system?: ISystemOperations = new SystemOperationsStub();
|
||||
|
||||
public isDesktop? = false;
|
||||
public isDesktop = false;
|
||||
|
||||
public os?: OperatingSystem = OperatingSystem.BlackBerryOS;
|
||||
|
||||
public log?: ILogger = new LoggerStub();
|
||||
public log: Logger = new LoggerStub();
|
||||
|
||||
public withLog(log?: ILogger): this {
|
||||
public withLog(log: Logger): this {
|
||||
this.log = log;
|
||||
return this;
|
||||
}
|
||||
|
||||
public withIsDesktop(value?: boolean): this {
|
||||
public withIsDesktop(value: boolean): this {
|
||||
this.isDesktop = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user