Extracting file from error object
This commit is contained in:
24
src/index.ts
24
src/index.ts
@ -113,7 +113,7 @@ export class LoggingBase {
|
||||
let e = new Error()
|
||||
this.message(LoggingTypes.Error, [error, ":", e.stack]);
|
||||
} else {
|
||||
this.message(LoggingTypes.Error, [error.name, ":", error.message, ":", error.stack]);
|
||||
this.message(LoggingTypes.Error, [error.name, ":", error.message, ":", error.stack], undefined, getCallerFromExisting(error));
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,7 +121,7 @@ export class LoggingBase {
|
||||
this.message(LoggingTypes.Error, message);
|
||||
}
|
||||
|
||||
private async message(type: LoggingTypes, message: any[] | string, customColors?: string) {
|
||||
private async message(type: LoggingTypes, message: any[] | string, customColors?: string, caller?: { file: string, line: number }) {
|
||||
var consoleLogFormat = Reset;
|
||||
if (!customColors) {
|
||||
switch (type) {
|
||||
@ -154,7 +154,7 @@ export class LoggingBase {
|
||||
}
|
||||
});
|
||||
}
|
||||
let file = getCallerFile()
|
||||
let file = caller || getCallerFile();
|
||||
let date = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '');
|
||||
let prefix = `[${LoggingTypes[type]}][${file.file}:${file.line}][${date}]: `;
|
||||
let message_lines = mb.split("\n").map(line => prefix + line);
|
||||
@ -381,6 +381,24 @@ function getCallerFile() {
|
||||
return { file: undefined, line: 0 };
|
||||
}
|
||||
|
||||
function getCallerFromExisting(err: Error): { file: string, line: number } {
|
||||
let lines = err.stack.split("\n");
|
||||
let current = path.basename(__filename);
|
||||
lines.shift();// removing first line
|
||||
while (lines.length > 0) {
|
||||
let line = lines.shift();
|
||||
let matches = line.match(/[a-zA-Z]+[.][a-zA-Z]+[:][0-9]+/g)
|
||||
if (matches && matches.length > 0) {
|
||||
let [f, line] = matches[0].split(":")
|
||||
if (f != current) {
|
||||
return {
|
||||
file: f, line: Number(line)
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export enum LoggingTypes {
|
||||
Log,
|
||||
Warning,
|
||||
|
Reference in New Issue
Block a user