Files
mattermostest/src/common/log.ts
Devin Binnie 245215c678 [MM-51873] Create central logging module for adding prefixes to differentiate logs between modules (#2652)
* Create central logging module for adding prefixes to differentiate logs between modules

* Turn logger into class

* Merge'd

* Rework to use class more intelligently

* Fix modalView

* Fix webContentEvents

* Update src/main/app/intercom.ts

Co-authored-by: Daniel Espino García <larkox@gmail.com>

* Shorten prefixes on object creation

---------

Co-authored-by: Daniel Espino García <larkox@gmail.com>
2023-04-05 12:09:56 -04:00

53 lines
1.7 KiB
TypeScript

// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import log, {LevelOption} from 'electron-log';
import Util from 'common/utils/util';
export const setLoggingLevel = (level: string) => {
if (log.transports.file.level === level) {
return;
}
log.error('Logger', 'Log level set to:', level);
log.transports.console.level = level as LevelOption;
log.transports.file.level = level as LevelOption;
};
export class Logger {
private prefixes: string[];
constructor(...prefixes: string[]) {
this.prefixes = this.shortenPrefixes(...prefixes);
}
withPrefix = (...prefixes: string[]) => {
return {
error: this.prefixed(log.error, ...prefixes),
warn: this.prefixed(log.warn, ...prefixes),
info: this.prefixed(log.info, ...prefixes),
verbose: this.prefixed(log.verbose, ...prefixes),
debug: this.prefixed(log.debug, ...prefixes),
silly: this.prefixed(log.silly, ...prefixes),
log: this.prefixed(log.log, ...prefixes),
};
}
private prefixed = (func: (...args: any[]) => void, ...additionalPrefixes: string[]) => {
return (...args: any[]) => func(...this.prefixes, ...this.shortenPrefixes(...additionalPrefixes), ...args);
}
private shortenPrefixes = (...prefixes: string[]) => {
return prefixes.map((prefix) => `[${Util.shorten(prefix)}]`);
}
error = this.prefixed(log.error);
warn = this.prefixed(log.warn);
info = this.prefixed(log.info);
verbose = this.prefixed(log.verbose);
debug = this.prefixed(log.debug);
silly = this.prefixed(log.silly);
log = this.prefixed(log.log);
}