22
33const { storage } = require ( '../../../datadog-core' )
44const { LogChannel } = require ( './channels' )
5- const { Log } = require ( './log' )
65const defaultLogger = {
76 debug : msg => console . debug ( msg ) , /* eslint-disable-line no-console */
87 info : msg => console . info ( msg ) , /* eslint-disable-line no-console */
@@ -13,7 +12,6 @@ const defaultLogger = {
1312let enabled = false
1413let logger = defaultLogger
1514let logChannel = new LogChannel ( )
16- let stackTraceLimitFunction = onError
1715
1816function withNoop ( fn ) {
1917 const store = storage ( 'legacy' ) . getStore ( )
@@ -24,15 +22,15 @@ function withNoop (fn) {
2422}
2523
2624function unsubscribeAll ( ) {
27- logChannel . unsubscribe ( { trace : onTrace , debug : onDebug , info : onInfo , warn : onWarn , error : onError } )
25+ logChannel . unsubscribe ( { trace, debug, info, warn, error } )
2826}
2927
3028function toggleSubscription ( enable , level ) {
3129 unsubscribeAll ( )
3230
3331 if ( enable ) {
3432 logChannel = new LogChannel ( level )
35- logChannel . subscribe ( { trace : onTrace , debug : onDebug , info : onInfo , warn : onWarn , error : onError } )
33+ logChannel . subscribe ( { trace, debug, info, warn, error } )
3634 }
3735}
3836
@@ -53,89 +51,26 @@ function reset () {
5351 toggleSubscription ( false )
5452}
5553
56- function getErrorLog ( err ) {
57- if ( typeof err ?. delegate === 'function' ) {
58- const result = err . delegate ( )
59- return Array . isArray ( result ) ? Log . parse ( ...result ) : Log . parse ( result )
60- }
61- return err
62- }
63-
64- function setStackTraceLimitFunction ( fn ) {
65- if ( typeof fn !== 'function' ) {
66- throw new TypeError ( 'stackTraceLimitFunction must be a function' )
67- }
68- stackTraceLimitFunction = fn
69- }
70-
71- function onError ( err ) {
72- const { formatted, cause } = getErrorLog ( err )
73-
74- // calling twice logger.error() because Error cause is only available in Node.js v16.9.0
75- // TODO: replace it with Error(message, { cause }) when cause has broad support
76- if ( formatted ) {
77- withNoop ( ( ) => {
78- const stackTraceLimitBackup = Error . stackTraceLimit
79- Error . stackTraceLimit = 0
80- const newError = new Error ( formatted )
81- Error . stackTraceLimit = stackTraceLimitBackup
82- Error . captureStackTrace ( newError , stackTraceLimitFunction )
83- logger . error ( newError )
84- } )
85- }
86- if ( cause ) withNoop ( ( ) => logger . error ( cause ) )
54+ function error ( err ) {
55+ withNoop ( ( ) => logger . error ( err ) )
8756}
8857
89- function onWarn ( log ) {
90- const { formatted, cause } = getErrorLog ( log )
91- if ( formatted ) withNoop ( ( ) => logger . warn ( formatted ) )
92- if ( cause ) withNoop ( ( ) => logger . warn ( cause ) )
58+ function warn ( log ) {
59+ withNoop ( ( ) => logger . warn ? logger . warn ( log ) : logger . debug ( log ) )
9360}
9461
95- function onInfo ( log ) {
96- const { formatted, cause } = getErrorLog ( log )
97- if ( formatted ) withNoop ( ( ) => logger . info ( formatted ) )
98- if ( cause ) withNoop ( ( ) => logger . info ( cause ) )
62+ function info ( log ) {
63+ withNoop ( ( ) => logger . info ? logger . info ( log ) : logger . debug ( log ) )
9964}
10065
101- function onDebug ( log ) {
102- const { formatted, cause } = getErrorLog ( log )
103- if ( formatted ) withNoop ( ( ) => logger . debug ( formatted ) )
104- if ( cause ) withNoop ( ( ) => logger . debug ( cause ) )
66+ function debug ( log ) {
67+ withNoop ( ( ) => logger . debug ( log ) )
10568}
10669
107- function onTrace ( log ) {
108- const { formatted, cause } = getErrorLog ( log )
70+ function trace ( log ) {
10971 // Using logger.debug() because not all loggers have trace level,
11072 // and console.trace() has a completely different meaning.
111- if ( formatted ) withNoop ( ( ) => logger . debug ( formatted ) )
112- if ( cause ) withNoop ( ( ) => logger . debug ( cause ) )
113- }
114-
115- function error ( ...args ) {
116- onError ( Log . parse ( ...args ) )
117- }
118-
119- function warn ( ...args ) {
120- const log = Log . parse ( ...args )
121- if ( ! logger . warn ) return onDebug ( log )
122-
123- onWarn ( log )
124- }
125-
126- function info ( ...args ) {
127- const log = Log . parse ( ...args )
128- if ( ! logger . info ) return onDebug ( log )
129-
130- onInfo ( log )
131- }
132-
133- function debug ( ...args ) {
134- onDebug ( Log . parse ( ...args ) )
135- }
136-
137- function trace ( ...args ) {
138- onTrace ( Log . parse ( ...args ) )
73+ withNoop ( ( ) => logger . debug ( log ) )
13974}
14075
141- module . exports = { use, toggle, reset, error, warn, info, debug, trace, setStackTraceLimitFunction }
76+ module . exports = { use, toggle, reset, error, warn, info, debug, trace }
0 commit comments