Skip to content

Commit 50fed69

Browse files
committed
move impl
1 parent ea86043 commit 50fed69

File tree

1 file changed

+33
-37
lines changed

1 file changed

+33
-37
lines changed

api/src/api/diag.ts

+33-37
Original file line numberDiff line numberDiff line change
@@ -70,41 +70,6 @@ export class DiagAPI implements DiagLogger {
7070

7171
// DiagAPI specific functions
7272

73-
self.setLogger = (
74-
logger: DiagLogger,
75-
optionsOrLogLevel: DiagLogLevel | LoggerOptions = { logLevel: DiagLogLevel.INFO },
76-
) => {
77-
if (logger === self) {
78-
// There isn't much we can do here.
79-
// Logging to the console might break the user application.
80-
// Try to log to self. If a logger was previously registered it will receive the log.
81-
const err = new Error(
82-
'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'
83-
);
84-
self.error(err.stack ?? err.message);
85-
return false;
86-
}
87-
88-
if (typeof optionsOrLogLevel === 'number') {
89-
optionsOrLogLevel = {
90-
logLevel: optionsOrLogLevel,
91-
}
92-
}
93-
94-
const oldLogger = getGlobal('diag');
95-
const newLogger = createLogLevelDiagLogger(optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO, logger);
96-
// There already is an logger registered. We'll let it know before overwriting it.
97-
if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {
98-
const stack = new Error().stack ?? '<failed to generate stacktrace>';
99-
oldLogger.warn(`Current logger will be overwritten from ${stack}`);
100-
newLogger.warn(
101-
`Current logger will overwrite one already registered from ${stack}`
102-
);
103-
}
104-
105-
return registerGlobal('diag', newLogger, self, true);
106-
};
107-
10873
self.disable = () => {
10974
unregisterGlobal(API_NAME, self);
11075
};
@@ -128,7 +93,7 @@ export class DiagAPI implements DiagLogger {
12893
* @param logLevel - [Optional] The DiagLogLevel used to filter logs sent to the logger. If not provided it will default to INFO.
12994
* @returns true if the logger was successfully registered, else false
13095
*/
131-
public setLogger!: (logger: DiagLogger, logLevel?: DiagLogLevel) => boolean;
96+
public setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;
13297
/**
13398
* Set the global DiagLogger and DiagLogLevel.
13499
* If a global diag logger is already set, this will override it.
@@ -137,7 +102,38 @@ export class DiagAPI implements DiagLogger {
137102
* @param options - [Optional] And object which can contain `logLevel: DiagLogLevel` used to filter logs sent to the logger. If not provided it will default to INFO. The object may also contain `suppressOverrideMessage: boolean` which will suppress the warning normally logged when a logger is already registered.
138103
* @returns true if the logger was successfully registered, else false
139104
*/
140-
public setLogger!: (logger: DiagLogger, options?: LoggerOptions) => boolean;
105+
public setLogger(logger: DiagLogger, options?: LoggerOptions): boolean;
106+
public setLogger(logger: DiagLogger, optionsOrLogLevel: DiagLogLevel | LoggerOptions = { logLevel: DiagLogLevel.INFO }) {
107+
if (logger === this) {
108+
// There isn't much we can do here.
109+
// Logging to the console might break the user application.
110+
// Try to log to self. If a logger was previously registered it will receive the log.
111+
const err = new Error(
112+
'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'
113+
);
114+
this.error(err.stack ?? err.message);
115+
return false;
116+
}
117+
118+
if (typeof optionsOrLogLevel === 'number') {
119+
optionsOrLogLevel = {
120+
logLevel: optionsOrLogLevel,
121+
}
122+
}
123+
124+
const oldLogger = getGlobal('diag');
125+
const newLogger = createLogLevelDiagLogger(optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO, logger);
126+
// There already is an logger registered. We'll let it know before overwriting it.
127+
if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {
128+
const stack = new Error().stack ?? '<failed to generate stacktrace>';
129+
oldLogger.warn(`Current logger will be overwritten from ${stack}`);
130+
newLogger.warn(
131+
`Current logger will overwrite one already registered from ${stack}`
132+
);
133+
}
134+
135+
return registerGlobal('diag', newLogger, this, true);
136+
}
141137
/**
142138
*
143139
*/

0 commit comments

Comments
 (0)