Open pellared opened 1 month ago
Notes from 2023-09-20 Events/Logs SIG meeting:
@lmolkova, pointed out that if we would like to filter by event name then we would need to store a map (set) of disabled (or enabled) event names which can be inefficient (memory overhead).
@MSNev, had a remark that it is better to filter out events by severity rather than by name.
@pellared, said that on top of that each Logger can have its own severity threshold so each instrumentation library can have a distinct severity level.
@cijothomas, agreed that probably it is indeed better to keep the parameters small and just accept context and severity.
I am planning to discuss it during the next Specification SIG meeting. If there will be no objections then I plan to close this issue. We can reopen it in future if needed.
Spec SIG meeting notes: The event name may be added before stabilizing the API.
I am against this proposal as I do not think that handling event.name
for Enabled
is more important than for other attributes. Passing all attributes "destroys" the idea of Enabled
which is supposed to be used by the user to check whether it makes sense to build and emit a log records (performance tuning). The parameters accepted by Logger.Enabled
should be "cheap" to construct.
The SDK's Enabled implementation would get the context, severity level, instrumentation scope that should be enough.
Side note: I think that instrumentation libraries emitting events could add a event.namespace
instrumentation scope attribute instead of putting the namespace to each event.name
value as a prefix. EDIT: I created https://github.com/open-telemetry/opentelemetry-specification/issues/4239
I am against this proposal as I do not think that handling
event.name
forEnabled
is more important than for other attributes.
I'm not sure I agree, but even if we decide we want event name, I think it would be fine (maybe even better?) to introduce a new method EventEnabled
(possibly taking both event name and severity), which I think would remove Go's worry about introducing a new parameter to the Enabled
method(?)
As for Go SIG we are not worried about adding a parameter in future. We decided to favor future-compatibilty instead of slightly better ergonomics.
I am not sure if this issue should be a blocker for stabilizing Logger.Enabled.
I am against this proposal as I do not think that handling
event.name
forEnabled
is more important than for other attributes. Passing all attributes "destroys" the idea ofEnabled
which is supposed to be used by the user to check whether it makes sense to build and emit a log records (performance tuning). The parameters accepted byLogger.Enabled
should be "cheap" to construct.The SDK's Enabled implementation would get the context, severity level, instrumentation scope that should be enough.
Side note: I think that instrumentation libraries emitting events could add a
event.namespace
instrumentation scope attribute instead of putting the namespace to eachevent.name
value as a prefix. EDIT: I created #4239
If "event.name" is an attribute, then I totally agree! (Which is why OTel .NET, C++, Rust all decided to put EventName as a top-level field in LogRecord, and not inside Attributes)
It is possible that it will be a parameter for a dedicated enabled method for events (and not for log records):
There is a an open question whether EventName (or EventID) should be added as an optional parameter to Logger.Enabled.
_Originally posted by @cijothomas in https://github.com/open-telemetry/opentelemetry-specification/pull/4203#discussion_r1768896732_