@@ -6,18 +6,33 @@ import { AckeeLoggerOptions, AckeeLoggerStream } from './interfaces';
66import { levels } from './levels' ;
77import { StackDriverFormatStream } from './stackdriver' ;
88
9+ const isString = ( x : any ) => typeof x === 'string' || x instanceof String ;
10+
911const pkgJson = JSON . parse ( fs . readFileSync ( path . resolve ( path . join ( __dirname , '..' , 'package.json' ) ) , 'utf8' ) ) ;
1012
11- class DefaultTransformStream extends Transform {
12- // tslint:disable-next-line:function-name
13- public _transform ( chunk : any , _encoding : string , callback : ( error ?: Error | undefined , data ?: any ) => void ) {
14- const obj = JSON . parse ( chunk ) ;
15- obj . pkgVersion = pkgJson . version ;
13+ const getDefaultTransformStream = ( options : AckeeLoggerOptions & { messageKey : string ; loggerName ?: string } ) => {
14+ class DefaultTransformStream extends Transform {
15+ // tslint:disable-next-line:function-name
16+ public _transform ( chunk : any , _encoding : string , callback : ( error ?: Error | undefined , data ?: any ) => void ) {
17+ const obj = JSON . parse ( chunk ) ;
18+ obj . pkgVersion = pkgJson . version ;
19+ const loggerName = options . loggerName ;
20+ if ( options . pretty ) {
21+ obj [ 'name\0' ] = obj . name ; // add null character so that it is not interpreted by pino-pretty but still visible to user unchanged
22+ delete obj . name ;
23+ if ( loggerName ) {
24+ obj . name = loggerName ;
25+ }
26+ } else if ( obj [ options . messageKey ] && isString ( obj [ options . messageKey ] ) && loggerName ) {
27+ obj [ options . messageKey ] = `[${ loggerName } ] ${ obj [ options . messageKey ] } ` ;
28+ }
1629
17- this . push ( `${ JSON . stringify ( obj ) } \n` ) ;
18- callback ( ) ;
30+ this . push ( `${ JSON . stringify ( obj ) } \n` ) ;
31+ callback ( ) ;
32+ }
1933 }
20- }
34+ return DefaultTransformStream ;
35+ } ;
2136
2237const decorateStreams = < T extends Transform > ( streams : AckeeLoggerStream [ ] , streamClass : new ( ) => T ) => {
2338 return streams . map ( stream => {
@@ -31,7 +46,10 @@ const decorateStreams = <T extends Transform>(streams: AckeeLoggerStream[], stre
3146 } ) ;
3247} ;
3348
34- const initLoggerStreams = ( defaultLevel : pino . LevelWithSilent , options : AckeeLoggerOptions = { } ) => {
49+ const initLoggerStreams = (
50+ defaultLevel : pino . LevelWithSilent ,
51+ options : AckeeLoggerOptions & { messageKey : string ; loggerName ?: string }
52+ ) => {
3553 let streams : AckeeLoggerStream [ ] ;
3654 if ( options . streams ) {
3755 streams = options . streams ;
@@ -54,7 +72,7 @@ const initLoggerStreams = (defaultLevel: pino.LevelWithSilent, options: AckeeLog
5472 streams = decorateStreams ( streams , StackDriverFormatStream ) ;
5573 }
5674
57- streams = decorateStreams ( streams , DefaultTransformStream ) ;
75+ streams = decorateStreams ( streams , getDefaultTransformStream ( options ) ) ;
5876
5977 return streams ;
6078} ;
0 commit comments