UNPKG

4.02 kBJavaScriptView Raw
1"use strict";
2/*
3 * Copyright The OpenTelemetry Authors
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17Object.defineProperty(exports, "__esModule", { value: true });
18exports.DiagAPI = void 0;
19var ComponentLogger_1 = require("../diag/ComponentLogger");
20var logLevelLogger_1 = require("../diag/internal/logLevelLogger");
21var types_1 = require("../diag/types");
22var global_utils_1 = require("../internal/global-utils");
23var API_NAME = 'diag';
24/**
25 * Singleton object which represents the entry point to the OpenTelemetry internal
26 * diagnostic API
27 */
28var DiagAPI = /** @class */ (function () {
29 /**
30 * Private internal constructor
31 * @private
32 */
33 function DiagAPI() {
34 function _logProxy(funcName) {
35 return function () {
36 var args = [];
37 for (var _i = 0; _i < arguments.length; _i++) {
38 args[_i] = arguments[_i];
39 }
40 var logger = global_utils_1.getGlobal('diag');
41 // shortcut if logger not set
42 if (!logger)
43 return;
44 return logger[funcName].apply(logger, args);
45 };
46 }
47 // Using self local variable for minification purposes as 'this' cannot be minified
48 var self = this;
49 // DiagAPI specific functions
50 self.setLogger = function (logger, logLevel) {
51 var _a, _b;
52 if (logLevel === void 0) { logLevel = types_1.DiagLogLevel.INFO; }
53 if (logger === self) {
54 // There isn't much we can do here.
55 // Logging to the console might break the user application.
56 // Try to log to self. If a logger was previously registered it will receive the log.
57 var err = new Error('Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation');
58 self.error((_a = err.stack) !== null && _a !== void 0 ? _a : err.message);
59 return false;
60 }
61 var oldLogger = global_utils_1.getGlobal('diag');
62 var newLogger = logLevelLogger_1.createLogLevelDiagLogger(logLevel, logger);
63 // There already is an logger registered. We'll let it know before overwriting it.
64 if (oldLogger) {
65 var stack = (_b = new Error().stack) !== null && _b !== void 0 ? _b : '<failed to generate stacktrace>';
66 oldLogger.warn("Current logger will be overwritten from " + stack);
67 newLogger.warn("Current logger will overwrite one already registered from " + stack);
68 }
69 return global_utils_1.registerGlobal('diag', newLogger, self, true);
70 };
71 self.disable = function () {
72 global_utils_1.unregisterGlobal(API_NAME, self);
73 };
74 self.createComponentLogger = function (options) {
75 return new ComponentLogger_1.DiagComponentLogger(options);
76 };
77 self.verbose = _logProxy('verbose');
78 self.debug = _logProxy('debug');
79 self.info = _logProxy('info');
80 self.warn = _logProxy('warn');
81 self.error = _logProxy('error');
82 }
83 /** Get the singleton instance of the DiagAPI API */
84 DiagAPI.instance = function () {
85 if (!this._instance) {
86 this._instance = new DiagAPI();
87 }
88 return this._instance;
89 };
90 return DiagAPI;
91}());
92exports.DiagAPI = DiagAPI;
93//# sourceMappingURL=diag.js.map
\No newline at end of file