Making filename output optional
This commit is contained in:
79
src/base.ts
79
src/base.ts
@ -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);
|
||||
}
|
||||
|
@ -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");
|
||||
|
Reference in New Issue
Block a user