|
65 | 65 | (doto (AutoConfiguredOpenTelemetrySdk/builder) |
66 | 66 | (.setResultAsGlobal false))) |
67 | 67 |
|
| 68 | + For trace correlation Timbre config should include |
| 69 | + :middleware [... otlp/middleware ...]. |
| 70 | +
|
68 | 71 | [1] Ref. <https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/CHANGELOG.md#version-200-2024-01-12>" |
69 | 72 | [{:keys [^LoggerProvider logger-provider]}] |
70 | 73 | {:enabled? true |
|
74 | 77 | :output-fn :inherit |
75 | 78 | :fn |
76 | 79 | (fn [{:keys [^java.util.Date instant level ^String ?ns-str |
77 | | - ?file ?line ?err vargs msg_ context]}] |
| 80 | + ?file ?line ?err vargs msg_ context] :as data}] |
78 | 81 |
|
79 | 82 | (let [logger (.get logger-provider ?ns-str) |
80 | 83 | timestamp (.toInstant instant) |
|
89 | 92 | :ex-data ?ex-data) |
90 | 93 |
|
91 | 94 | event (merge (dissoc arg :msg) extra) |
92 | | - attributes (attr/->attributes event)] |
| 95 | + attributes (attr/->attributes event) |
| 96 | + lrb (.logRecordBuilder logger)] |
| 97 | + |
| 98 | + ;; Ref. https://javadoc.io/doc/io.opentelemetry/opentelemetry-api-logs/latest/io/opentelemetry/api/logs/LogRecordBuilder.html |
| 99 | + |
| 100 | + (when-let [otel-context (get data :otel/context)] |
| 101 | + (.setContext lrb otel-context)) |
93 | 102 |
|
94 | 103 | ;; TODO Use clj-otel once it supports the logs API, |
95 | 104 | ;; Ref. <https://github.com/steffan-westcott/clj-otel/issues/8> |
96 | | - (.emit |
97 | | - (doto (.logRecordBuilder logger) |
98 | | - (.setAllAttributes attributes) |
99 | | - (.setTimestamp timestamp) |
100 | | - (.setBody message) |
101 | | - (.setSeverity severity) |
102 | | - (.setSeverityText (.toString severity))))))}) |
| 105 | + (doto lrb |
| 106 | + (.setAllAttributes attributes) |
| 107 | + (.setTimestamp timestamp) |
| 108 | + (.setBody message) |
| 109 | + (.setSeverity severity) |
| 110 | + (.setSeverityText (.toString severity)) |
| 111 | + (.emit))))}) |
| 112 | + |
| 113 | +(defn middleware |
| 114 | + "Adds `:otel/context` to log data." |
| 115 | + [data] |
| 116 | + (assoc data :otel/context |
| 117 | + (io.opentelemetry.context.Context/current))) |
0 commit comments