Making filename output optional

This commit is contained in:
Fabian Stamm
2020-09-30 16:46:16 +02:00
parent b92caf6468
commit bcff79fc90
4 changed files with 88 additions and 63 deletions

View File

@ -39,6 +39,11 @@ export interface LoggingBaseOptions {
* Prints output to console
*/
console: boolean;
/**
* Enables printing of calling file
*/
resolve_filename: boolean;
}
const adapterCache = new WeakMap<Adapter, number>();
@ -79,6 +84,8 @@ export class LoggingBase {
private messageObservable = new Observable<Message>();
protected _name: string;
private resolve_filename: boolean;
private _logLevel = LoggingTypes.Debug;
get logLevel() {
@ -108,11 +115,14 @@ export class LoggingBase {
let config: LoggingBaseOptions = {
name: undefined,
console: true,
resolve_filename: true,
...opt,
};
if (config.name) this._name = config.name;
this.resolve_filename = config.resolve_filename;
for (let key in this) {
if (typeof this[key] === "function")
this[key] = (<any>this[key]).bind(this);
@ -242,17 +252,23 @@ export class LoggingBase {
this.message(LoggingTypes.Warning, message);
}
error(error: Error | string) {
error(error: Error | string, ...message: any[]) {
if (this._logLevel > LoggingTypes.Error) return;
if (!error)
error = "Empty ERROR was passed, so no informations available";
if (typeof error === "string") {
let e = new Error("This is a fake error, to get a stack trace");
this.message(LoggingTypes.Error, [error, "\n", e.stack]);
this.message(LoggingTypes.Error, [
error,
"\n",
e.stack,
"\n",
...message,
]);
} else {
this.message(
LoggingTypes.Error,
[error.message, "\n", error.stack],
[error.message, "\n", error.stack, "\n", ...message],
getCallerFromExisting(error)
);
}
@ -323,35 +339,38 @@ export class LoggingBase {
let date = new Date().toISOString().replace(/T/, " ").replace(/\..+/, "");
let file_raw = caller;
if (!file_raw) {
try {
file_raw = getCallerFile();
} catch (err) {
file_raw = {
file: "<unknown>",
line: 0,
column: 0,
};
let file: string | undefined = undefined;
if (this.resolve_filename) {
let file_raw = caller;
if (!file_raw) {
try {
file_raw = getCallerFile();
} catch (err) {
file_raw = {
file: "<unknown>",
line: 0,
column: 0,
};
}
}
if (
PROJECT_ROOT &&
file_raw.file &&
file_raw.file.startsWith(PROJECT_ROOT)
) {
let newF = file_raw.file.substring(PROJECT_ROOT.length);
if (newF.startsWith("/") || newF.startsWith("\\"))
newF = newF.substring(1);
file_raw.file = newF;
}
file = `${file_raw.file || "<unknown>"}:${file_raw.line}:${
file_raw.column || 0
}`;
}
if (
PROJECT_ROOT &&
file_raw.file &&
file_raw.file.startsWith(PROJECT_ROOT)
) {
let newF = file_raw.file.substring(PROJECT_ROOT.length);
if (newF.startsWith("/") || newF.startsWith("\\"))
newF = newF.substring(1);
file_raw.file = newF;
}
let file = `${file_raw.file || "<unknown>"}:${file_raw.line}:${
file_raw.column || 0
}`;
let type_str = LoggingTypes[type].toUpperCase().padEnd(5, " ");
let type_format: Format[] = [];
switch (type) {
@ -381,7 +400,7 @@ export class LoggingBase {
a(date, this._formatMap.date);
a("][");
a(type_str, type_format);
if (file_raw.file) {
if (file) {
a("][");
a(file, this._formatMap.file);
}

View File

@ -83,3 +83,9 @@ Logging.log("MSG from root");
const timer = Logging.time("timer1", "Test Timer");
setTimeout(() => timer.end(), 1000);
const withoutFile = new LoggingBase({
resolve_filename: false,
});
withoutFile.log("This should not have a file attached");