Skip to content

Commit 62f8695

Browse files
authored
feat(diag-logger): part 2 - breaking changes - remove api.Logger, api… (#1925)
1 parent 03e741b commit 62f8695

File tree

165 files changed

+927
-1810
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+927
-1810
lines changed

README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,53 @@ To request automatic tracing support for a module not on this list, please [file
244244

245245
## Upgrade guidelines
246246

247+
### 0.17.0 to ???
248+
249+
[PR-1880](https://github.com/open-telemetry/opentelemetry-js/pull/1880) feat(diag-logger): introduce a new global level api.diag for internal diagnostic logging
250+
251+
[PR-1925](https://github.com/open-telemetry/opentelemetry-js/pull/1925) feat(diag-logger): part 2 - breaking changes - remove api.Logger, api.NoopLogger, core.LogLevel, core.ConsoleLogger
252+
253+
- These PR's remove the previous ```Logger``` and ```LogLevel``` implementations and change the way you should use the replacement ```DiagLogger``` and ```DiagLogLevel```, below are simple examples of how to change your existing usages.
254+
255+
#### Setting the global diagnostic logger
256+
257+
The new global [```api.diag```](https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-api/src/api/diag.ts#L32) provides the ability to set the global diagnostic logger ```setLogger()``` and logging level ```setLogLevel()```, it is also a ```DiagLogger``` implementation and should be directly to log diagnostic messages.
258+
259+
All included logger references have been removed in preference to using the global ```api.diag``` directly, so you no longer need to pass around the logger instance via function parameters or included as part of the configuration for a component.
260+
261+
```javascript
262+
// Setting the default Global logger to use the Console
263+
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
264+
diag.setLogger(new DiagConsoleLogger())
265+
266+
// And optionally change the logging level (Defaults to INFO)
267+
diag.setLogLevel(DiagLogLevel.ERROR);
268+
```
269+
270+
#### Using the logger anywhere in the code
271+
272+
```typescript
273+
import { diag } from "@opentelemetry/api";
274+
275+
// Remove or make optional the parameter and don't use it.
276+
export function MyFunction() {
277+
diag.debug("...");
278+
diag.info("...");
279+
diag.warn("...");
280+
diag.error("...");
281+
diag.verbose("..");
282+
}
283+
284+
```
285+
286+
#### Setting the logger back to a noop
287+
288+
```typescript
289+
import { diag } from "@opentelemetry/api";
290+
diag.setLogger();
291+
292+
```
293+
247294
### 0.16.0 to 0.17.0
248295

249296
[PR-1855](https://github.com/open-telemetry/opentelemetry-js/pull/1855) Use instrumentation loader to load plugins and instrumentations

benchmark/tracer.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ const benchmark = require('./benchmark');
44
const opentelemetry = require('../packages/opentelemetry-api');
55
const { BasicTracerProvider, BatchSpanProcessor, InMemorySpanExporter, SimpleSpanProcessor } = require('../packages/opentelemetry-tracing');
66

7-
const diagLogger = opentelemetry.createNoopDiagLogger();
7+
// Clear any previous global logger
8+
opentelemetry.diag.setLogger();
89

910
const setups = [
1011
{
@@ -13,7 +14,7 @@ const setups = [
1314
},
1415
{
1516
name: 'BasicTracerProvider',
16-
provider: new BasicTracerProvider({ logger: diagLogger })
17+
provider: new BasicTracerProvider()
1718
},
1819
{
1920
name: 'BasicTracerProvider with SimpleSpanProcessor',
@@ -63,7 +64,7 @@ for (const setup of setups) {
6364
suite.run({ async: false });
6465
}
6566
function getProvider(processor) {
66-
const provider = new BasicTracerProvider({ logger: diagLogger });
67+
const provider = new BasicTracerProvider();
6768
provider.addSpanProcessor(processor);
6869
return provider;
6970
}

examples/collector-exporter-node/metrics.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector')
66
// const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector-proto');
77
const { MeterProvider } = require('@opentelemetry/metrics');
88

9+
// Optional and only needed to see the internal diagnostic logging (during development)
910
diag.setLogger(new DiagConsoleLogger());
1011
diag.setLogLevel(DiagLogLevel.DEBUG);
1112

1213
const metricExporter = new CollectorMetricExporter({
1314
serviceName: 'basic-metric-service',
1415
// url: 'http://localhost:55681/v1/metrics',
15-
logger: diag,
1616
});
1717

1818
const meter = new MeterProvider({

examples/metrics/metrics/observer.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
'use strict';
22

33
const { MeterProvider } = require('@opentelemetry/metrics');
4-
const { DiagConsoleLogger, DiagLogLevel, diagLogLevelFilter } = require('@opentelemetry/api');
4+
const { DiagConsoleLogger, DiagLogLevel, diag } = require('@opentelemetry/api');
55
const { PrometheusExporter } = require('@opentelemetry/exporter-prometheus');
66

7+
// Optional and only needed to see the internal diagnostic logging (during development)
8+
diag.setLogger(new DiagConsoleLogger());
9+
diag.setLogLevel(DiagLogLevel.DEBUG);
10+
711
const exporter = new PrometheusExporter(
812
{
913
startServer: true,
@@ -61,7 +65,6 @@ meter.createBatchObserver((observerBatchResult) => {
6165
});
6266
}, {
6367
maxTimeoutUpdateMS: 500,
64-
logger: diagLogLevelFilter(DiagLogLevel.DEBUG, new DiagConsoleLogger())
6568
},
6669
);
6770

examples/tracer-web/examples/metrics/index.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
'use strict';
22

3-
const { DiagConsoleLogger, DiagLogLevel, diagLogLevelFilter } = require('@opentelemetry/api');
3+
const { DiagConsoleLogger, DiagLogLevel, diag } = require('@opentelemetry/api');
44
const { CollectorMetricExporter } = require('@opentelemetry/exporter-collector');
55
const { MeterProvider } = require('@opentelemetry/metrics');
66

7+
// Optional and only needed to see the internal diagnostic logging (during development)
8+
diag.setLogger(new DiagConsoleLogger());
9+
diag.setLogLevel(DiagLogLevel.DEBUG);
10+
711
const metricExporter = new CollectorMetricExporter({
812
serviceName: 'basic-metric-service',
9-
logger: diagLogLevelFilter(DiagLogLevel.DEBUG, new DiagConsoleLogger()),
1013
});
1114

1215
let interval;

getting-started/traced-example/tracing.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
"use strict";
22

3-
const { LogLevel } = require("@opentelemetry/core");
43
const { NodeTracerProvider } = require("@opentelemetry/node");
54
const { SimpleSpanProcessor } = require("@opentelemetry/tracing");
65
const { ZipkinExporter } = require("@opentelemetry/exporter-zipkin");
76
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
87

9-
const provider = new NodeTracerProvider({ logLevel: LogLevel.ERROR });
8+
const provider = new NodeTracerProvider();
109

1110
provider.addSpanProcessor(
1211
new SimpleSpanProcessor(
Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
1-
import { LogLevel } from '@opentelemetry/core';
21
import { NodeTracerProvider } from '@opentelemetry/node';
3-
2+
43
import { SimpleSpanProcessor } from '@opentelemetry/tracing';
54
import { ZipkinExporter } from '@opentelemetry/exporter-zipkin';
65
// For Jaeger, use the following line instead:
76
// import { JaegerExporter } from '@opentelemetry/exporter-jaeger';
8-
9-
const provider: NodeTracerProvider = new NodeTracerProvider({
10-
logLevel: LogLevel.ERROR,
11-
});
12-
7+
8+
const provider: NodeTracerProvider = new NodeTracerProvider();
9+
1310
provider.register();
14-
11+
1512
provider.addSpanProcessor(
1613
new SimpleSpanProcessor(
1714
new ZipkinExporter({
@@ -24,5 +21,5 @@ provider.addSpanProcessor(
2421
}),
2522
),
2623
);
27-
24+
2825
console.log('tracing initialized');

packages/opentelemetry-api-metrics/src/types/Metric.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import {
1919
BoundCounter,
2020
BoundValueRecorder,
2121
} from './BoundInstrument';
22-
import { Logger } from '@opentelemetry/api';
2322

2423
/**
2524
* Options needed for metric creation
@@ -55,11 +54,6 @@ export interface MetricOptions {
5554
*/
5655
valueType?: ValueType;
5756

58-
/**
59-
* User provided logger.
60-
*/
61-
logger?: Logger;
62-
6357
/**
6458
* Boundaries optional for histogram
6559
*/
@@ -71,11 +65,6 @@ export interface BatchObserverOptions {
7165
* Indicates how long the batch metric should wait to update before cancel
7266
*/
7367
maxTimeoutUpdateMS?: number;
74-
75-
/**
76-
* User provided logger.
77-
*/
78-
logger?: Logger;
7968
}
8069

8170
/** The Type of value. It describes how the data is reported. */

packages/opentelemetry-api/src/api/diag.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ export class DiagAPI implements DiagLogger {
9999
return _logger;
100100
};
101101

102-
self.setLogger = (logger: DiagLogger): DiagLogger => {
102+
self.setLogger = (logger?: DiagLogger): DiagLogger => {
103103
const prevLogger = _logger;
104-
if (prevLogger !== logger && logger !== self) {
104+
if (!logger || logger !== self) {
105105
// Simple special case to avoid any possible infinite recursion on the logging functions
106106
_logger = logger || createNoopDiagLogger();
107107
_filteredLogger = createLogLevelDiagLogger(_logLevel, _logger);
@@ -133,10 +133,10 @@ export class DiagAPI implements DiagLogger {
133133

134134
/**
135135
* Set the DiagLogger instance
136-
* @param logger - The DiagLogger instance to set as the default logger
136+
* @param logger - [Optional] The DiagLogger instance to set as the default logger, if not provided it will set it back as a noop
137137
* @returns The previously registered DiagLogger
138138
*/
139-
public setLogger!: (logger: DiagLogger) => DiagLogger;
139+
public setLogger!: (logger?: DiagLogger) => DiagLogger;
140140

141141
/** Set the default maximum diagnostic logging level */
142142
public setLogLevel!: (maxLogLevel: DiagLogLevel) => void;
@@ -146,8 +146,5 @@ export class DiagAPI implements DiagLogger {
146146
public debug!: DiagLogFunction;
147147
public info!: DiagLogFunction;
148148
public warn!: DiagLogFunction;
149-
public startupInfo!: DiagLogFunction;
150149
public error!: DiagLogFunction;
151-
public critical!: DiagLogFunction;
152-
public terminal!: DiagLogFunction;
153150
}

packages/opentelemetry-api/src/common/Logger.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)