You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
sdk/log: Add FilterProcessor and EnabledParameters (#6317)
Per
#6271 (comment)
> We agreed that we can move `FilterProcessor` directly to `sdk/log` as
Logs SDK does not look to be stabilized soon.
- Add the possibility to filter based on the resource and scope which is
available for the SDK. The scope information is the most important as it
gives the possibility to e.g. filter out logs emitted for a given
logger. Thus e.g.
open-telemetry/opentelemetry-specification#4364
is not necessary. See
open-telemetry/opentelemetry-specification#4290 (comment)
for more context.
- It is going be an example for
open-telemetry/opentelemetry-specification#4363
There is a little overhead (IMO totally acceptable) because of data
transformation. Most importantly, there is no new heap allocation.
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/log
cpu: 13th Gen Intel(R) Core(TM) i7-13800H
│ old.txt │ new.txt │
│ sec/op │ sec/op vs base │
LoggerEnabled-20 4.589n ± 1% 319.750n ± 16% +6867.75% (p=0.000 n=10)
│ old.txt │ new.txt │
│ B/op │ B/op vs base │
LoggerEnabled-20 0.000Ki ± 0% 1.093Ki ± 13% ? (p=0.000 n=10)
│ old.txt │ new.txt │
│ allocs/op │ allocs/op vs base │
LoggerEnabled-20 0.000 ± 0% 0.000 ± 0% ~ (p=1.000 n=10) ¹
¹ all samples are equal
```
`Logger.Enabled` is still more efficient than `Logger.Emit` (benchmarks
from #6315).
```
goos: linux
goarch: amd64
pkg: go.opentelemetry.io/otel/sdk/log
cpu: 13th Gen Intel(R) Core(TM) i7-13800H
BenchmarkLoggerEmit/5_attributes-20 559934 2391 ns/op 39088 B/op 1 allocs/op
BenchmarkLoggerEmit/10_attributes-20 1000000 5910 ns/op 49483 B/op 5 allocs/op
BenchmarkLoggerEnabled-20 1605697 968.7 ns/op 1272 B/op 0 allocs/op
PASS
ok go.opentelemetry.io/otel/sdk/log 10.789s
```
Prior art:
- #6271
- #6286
I also created for tracking purposes:
- https://github.com/open-telemetry/opentelemetry-go/issues/6328
0 commit comments