@effect/opentelemetry 4.0.0-beta.10 → 4.0.0-beta.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/NodeSdk.d.ts +86 -14
- package/dist/NodeSdk.d.ts.map +1 -1
- package/dist/NodeSdk.js +31 -8
- package/dist/NodeSdk.js.map +1 -1
- package/dist/OtelLogger.d.ts +99 -0
- package/dist/OtelLogger.d.ts.map +1 -0
- package/dist/OtelLogger.js +139 -0
- package/dist/OtelLogger.js.map +1 -0
- package/dist/{Metrics.d.ts → OtelMetrics.d.ts} +42 -18
- package/dist/OtelMetrics.d.ts.map +1 -0
- package/dist/{Metrics.js → OtelMetrics.js} +27 -12
- package/dist/OtelMetrics.js.map +1 -0
- package/dist/OtelTracer.d.ts +186 -0
- package/dist/OtelTracer.d.ts.map +1 -0
- package/dist/{Tracer.js → OtelTracer.js} +129 -72
- package/dist/OtelTracer.js.map +1 -0
- package/dist/Resource.d.ts +57 -13
- package/dist/Resource.d.ts.map +1 -1
- package/dist/Resource.js +48 -13
- package/dist/Resource.js.map +1 -1
- package/dist/WebSdk.d.ts +82 -13
- package/dist/WebSdk.d.ts.map +1 -1
- package/dist/WebSdk.js +28 -7
- package/dist/WebSdk.js.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/internal/attributes.js +5 -0
- package/dist/internal/attributes.js.map +1 -1
- package/dist/internal/metrics.js +5 -5
- package/dist/internal/metrics.js.map +1 -1
- package/package.json +22 -18
- package/src/NodeSdk.ts +87 -15
- package/src/OtelLogger.ts +193 -0
- package/src/{Metrics.ts → OtelMetrics.ts} +42 -18
- package/src/{Tracer.ts → OtelTracer.ts} +161 -101
- package/src/Resource.ts +58 -14
- package/src/WebSdk.ts +83 -14
- package/src/index.ts +12 -12
- package/src/internal/attributes.ts +7 -0
- package/src/internal/metrics.ts +7 -7
- package/dist/Logger.d.ts +0 -48
- package/dist/Logger.d.ts.map +0 -1
- package/dist/Logger.js +0 -76
- package/dist/Logger.js.map +0 -1
- package/dist/Metrics.d.ts.map +0 -1
- package/dist/Metrics.js.map +0 -1
- package/dist/Tracer.d.ts +0 -129
- package/dist/Tracer.d.ts.map +0 -1
- package/dist/Tracer.js.map +0 -1
- package/src/Logger.ts +0 -124
package/src/Logger.ts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @since 1.0.0
|
|
3
|
-
*/
|
|
4
|
-
import * as Otel from "@opentelemetry/sdk-logs"
|
|
5
|
-
import type { NonEmptyReadonlyArray } from "effect/Array"
|
|
6
|
-
import * as Arr from "effect/Array"
|
|
7
|
-
import * as Clock from "effect/Clock"
|
|
8
|
-
import type * as Duration from "effect/Duration"
|
|
9
|
-
import * as Effect from "effect/Effect"
|
|
10
|
-
import * as Layer from "effect/Layer"
|
|
11
|
-
import * as Logger from "effect/Logger"
|
|
12
|
-
import * as LogLevel from "effect/LogLevel"
|
|
13
|
-
import * as Predicate from "effect/Predicate"
|
|
14
|
-
import * as ServiceMap from "effect/ServiceMap"
|
|
15
|
-
import * as Tracer from "effect/Tracer"
|
|
16
|
-
import { unknownToAttributeValue } from "./internal/attributes.ts"
|
|
17
|
-
import { Resource } from "./Resource.ts"
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* @since 1.0.0
|
|
21
|
-
* @category Services
|
|
22
|
-
*/
|
|
23
|
-
export class OtelLoggerProvider extends ServiceMap.Service<
|
|
24
|
-
OtelLoggerProvider,
|
|
25
|
-
Otel.LoggerProvider
|
|
26
|
-
>()("@effect/opentelemetry/Logger/OtelLoggerProvider") {}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @since 1.0.0
|
|
30
|
-
* @category Constructors
|
|
31
|
-
*/
|
|
32
|
-
export const make: Effect.Effect<
|
|
33
|
-
Logger.Logger<unknown, void>,
|
|
34
|
-
never,
|
|
35
|
-
OtelLoggerProvider
|
|
36
|
-
> = Effect.gen(function*() {
|
|
37
|
-
const loggerProvider = yield* OtelLoggerProvider
|
|
38
|
-
const clock = yield* Clock.Clock
|
|
39
|
-
const otelLogger = loggerProvider.getLogger("@effect/opentelemetry")
|
|
40
|
-
|
|
41
|
-
return Logger.make((options) => {
|
|
42
|
-
const attributes: Record<string, any> = {
|
|
43
|
-
fiberId: options.fiber.id
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const span = ServiceMap.getOrUndefined(options.fiber.services, Tracer.ParentSpan)
|
|
47
|
-
|
|
48
|
-
if (Predicate.isNotUndefined(span)) {
|
|
49
|
-
attributes.spanId = span.spanId
|
|
50
|
-
attributes.traceId = span.traceId
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// TODO: add back after log spans / annotations
|
|
54
|
-
// for (const [key, value] of options.annotations) {
|
|
55
|
-
// attributes[key] = unknownToAttributeValue(value)
|
|
56
|
-
// }
|
|
57
|
-
// const now = options.date.getTime()
|
|
58
|
-
// for (const span of options.spans) {
|
|
59
|
-
// attributes[`logSpan.${span.label}`] = `${now - span.startTime}ms`
|
|
60
|
-
// }
|
|
61
|
-
|
|
62
|
-
const message = Arr.ensure(options.message).map(unknownToAttributeValue)
|
|
63
|
-
otelLogger.emit({
|
|
64
|
-
body: message.length === 1 ? message[0] : message,
|
|
65
|
-
severityText: options.logLevel,
|
|
66
|
-
severityNumber: LogLevel.getOrdinal(options.logLevel),
|
|
67
|
-
timestamp: options.date,
|
|
68
|
-
observedTimestamp: clock.currentTimeMillisUnsafe(),
|
|
69
|
-
attributes
|
|
70
|
-
})
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* @since 1.0.0
|
|
76
|
-
* @category Layers
|
|
77
|
-
*/
|
|
78
|
-
export const layer = (options: {
|
|
79
|
-
/**
|
|
80
|
-
* If set to `true`, the OpenTelemetry logger will be merged with existing
|
|
81
|
-
* loggers in the application.
|
|
82
|
-
*
|
|
83
|
-
* If set to `false`, the OpenTelemetry logger will replace all existing
|
|
84
|
-
* loggers in the application.
|
|
85
|
-
*
|
|
86
|
-
* Defaults to `true`.
|
|
87
|
-
*/
|
|
88
|
-
readonly mergeWithExisting?: boolean | undefined
|
|
89
|
-
}): Layer.Layer<never, never, OtelLoggerProvider> =>
|
|
90
|
-
Logger.layer([make], {
|
|
91
|
-
mergeWithExisting: options.mergeWithExisting ?? true
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* @since 1.0.0
|
|
96
|
-
* @category Layers
|
|
97
|
-
*/
|
|
98
|
-
export const layerLoggerProvider = (
|
|
99
|
-
processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>,
|
|
100
|
-
config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
|
|
101
|
-
readonly shutdownTimeout?: Duration.Input | undefined
|
|
102
|
-
}
|
|
103
|
-
): Layer.Layer<OtelLoggerProvider, never, Resource> =>
|
|
104
|
-
Layer.effect(
|
|
105
|
-
OtelLoggerProvider,
|
|
106
|
-
Effect.gen(function*() {
|
|
107
|
-
const resource = yield* Resource
|
|
108
|
-
return yield* Effect.acquireRelease(
|
|
109
|
-
Effect.sync(() =>
|
|
110
|
-
new Otel.LoggerProvider({
|
|
111
|
-
...(config ?? undefined),
|
|
112
|
-
processors: Arr.ensure(processor),
|
|
113
|
-
resource
|
|
114
|
-
})
|
|
115
|
-
),
|
|
116
|
-
(provider) =>
|
|
117
|
-
Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
|
|
118
|
-
Effect.ignore,
|
|
119
|
-
Effect.interruptible,
|
|
120
|
-
Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
|
|
121
|
-
)
|
|
122
|
-
)
|
|
123
|
-
})
|
|
124
|
-
)
|