@@ -20,6 +20,7 @@ import {
2020 ComponentLoggerOptions ,
2121 DiagLogFunction ,
2222 DiagLogger ,
23+ DiagLoggerApi ,
2324 DiagLogLevel ,
2425} from '../diag/types' ;
2526import {
@@ -34,7 +35,7 @@ const API_NAME = 'diag';
3435 * Singleton object which represents the entry point to the OpenTelemetry internal
3536 * diagnostic API
3637 */
37- export class DiagAPI implements DiagLogger {
38+ export class DiagAPI implements DiagLogger , DiagLoggerApi {
3839 private static _instance ?: DiagAPI ;
3940
4041 /** Get the singleton instance of the DiagAPI API */
@@ -65,9 +66,9 @@ export class DiagAPI implements DiagLogger {
6566
6667 // DiagAPI specific functions
6768
68- self . setLogger = (
69- logger : DiagLogger ,
70- logLevel : DiagLogLevel = DiagLogLevel . INFO
69+ const setLogger : DiagLoggerApi [ 'setLogger' ] = (
70+ logger ,
71+ optionsOrLogLevel = { logLevel : DiagLogLevel . INFO } ,
7172 ) => {
7273 if ( logger === self ) {
7374 // There isn't much we can do here.
@@ -80,10 +81,16 @@ export class DiagAPI implements DiagLogger {
8081 return false ;
8182 }
8283
84+ if ( typeof optionsOrLogLevel === 'number' ) {
85+ optionsOrLogLevel = {
86+ logLevel : optionsOrLogLevel ,
87+ } ;
88+ }
89+
8390 const oldLogger = getGlobal ( 'diag' ) ;
84- const newLogger = createLogLevelDiagLogger ( logLevel , logger ) ;
91+ const newLogger = createLogLevelDiagLogger ( optionsOrLogLevel . logLevel ?? DiagLogLevel . INFO , logger ) ;
8592 // There already is an logger registered. We'll let it know before overwriting it.
86- if ( oldLogger ) {
93+ if ( oldLogger && ! optionsOrLogLevel . suppressOverrideMessage ) {
8794 const stack = new Error ( ) . stack ?? '<failed to generate stacktrace>' ;
8895 oldLogger . warn ( `Current logger will be overwritten from ${ stack } ` ) ;
8996 newLogger . warn (
@@ -94,6 +101,8 @@ export class DiagAPI implements DiagLogger {
94101 return registerGlobal ( 'diag' , newLogger , self , true ) ;
95102 } ;
96103
104+ self . setLogger = setLogger ;
105+
97106 self . disable = ( ) => {
98107 unregisterGlobal ( API_NAME , self ) ;
99108 } ;
@@ -109,15 +118,7 @@ export class DiagAPI implements DiagLogger {
109118 self . error = _logProxy ( 'error' ) ;
110119 }
111120
112- /**
113- * Set the global DiagLogger and DiagLogLevel.
114- * If a global diag logger is already set, this will override it.
115- *
116- * @param logger - [Optional] The DiagLogger instance to set as the default logger.
117- * @param logLevel - [Optional] The DiagLogLevel used to filter logs sent to the logger. If not provided it will default to INFO.
118- * @returns true if the logger was successfully registered, else false
119- */
120- public setLogger ! : ( logger : DiagLogger , logLevel ?: DiagLogLevel ) => boolean ;
121+ public setLogger ! : DiagLoggerApi [ 'setLogger' ] ;
121122 /**
122123 *
123124 */
0 commit comments