99'use strict' ;
1010
1111import {
12+ CallSite ,
1213 CompleteLoggerOptions ,
1314 LogContent ,
1415 LoggerOptions ,
@@ -19,6 +20,7 @@ import {
1920import merge from '@eartharoid/deep-merge' ;
2021import defaults from './defaults' ;
2122import { inspect } from 'util' ;
23+ import { relative } from 'path' ;
2224import * as transports from './transports' ;
2325
2426module . exports = class Logger {
@@ -53,6 +55,11 @@ module.exports = class Logger {
5355 }
5456
5557 public log ( namespace : string | null , level : LogLevel , ...content : LogContent ) {
58+ const _prepareStackTrace = Error . prepareStackTrace ; // eslint-disable-line no-underscore-dangle
59+ Error . prepareStackTrace = ( _ , stack ) => stack ;
60+ const stack = < Array < CallSite > | undefined > new Error ( ) . stack ;
61+ // const stack = (<> new Error().stack).slice(2);
62+ Error . prepareStackTrace = _prepareStackTrace ;
5663 const strings = content . map ( ( c : unknown ) => typeof c === 'string'
5764 ? c
5865 : c instanceof Error
@@ -64,13 +71,15 @@ module.exports = class Logger {
6471 for ( const transport of this . _options . transports ) {
6572 if ( level . number >= this . levels . indexOf ( transport . level ) ) {
6673 transport . write ( {
74+ column : stack ? stack [ 0 ] ?. getColumnNumber ( ) : null ,
6775 content : strings . join ( ' ' ) ,
76+ file : stack ? stack [ 0 ] ?. getFileName ( ) ? relative ( process . cwd ( ) , < string > stack [ 0 ] ?. getFileName ( ) ) : null : null ,
6877 level,
78+ line : stack ? stack [ 0 ] ?. getLineNumber ( ) : null ,
6979 namespace,
7080 timestamp : new Date ( )
7181 } ) ;
7282 }
73-
7483 }
7584 }
7685
@@ -79,7 +88,7 @@ module.exports = class Logger {
7988 }
8089
8190 set options ( options ) {
82- this . _options = options ;
91+ this . _options = merge ( this . _options , options ) ;
8392 this . _init ( ) ;
8493 }
8594} ;
0 commit comments