Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected behavior for log record attributes with symbols for keys #1781

Open
kaylareopelle opened this issue Dec 16, 2024 · 1 comment
Open
Labels
bug Something isn't working logs

Comments

@kaylareopelle
Copy link
Contributor

When a log record attribute has a Symbol for a key, the following OpenTelemetry error log message is output:
ERROR -- : OpenTelemetry error: invalid log record attribute key type Symbol on record: 'Thuja plicata with symbol attribute key'
Where Thuja plicata is the log body, and :cedar is the attribute key.

The expectation is that all attribute keys are Strings. This is the same as the expectation for attributes on stable Ruby OTel signals, like Spans/SpanEvents for Traces.

Despite this warning, the attribute is passed along to the exporter anyway, and it is successfully sent over OTLP.

For example (source):

OpenTelemetry Ruby logger SDK

# Use your Logger to  emit a log record
logger.on_emit(
  timestamp: Time.now,
  severity_text: 'INFO',
  body: 'Thuja plicata with symbol attribute key',
  attributes: { cedar: true },
)

Shell output from running the code above

[4:10](https://cloud-native.slack.com/archives/C01NWKKMKMY/p1734307839893059?thread_ts=1734228402.085199&cid=C01NWKKMKMY)
$ pwd
/Users/wsmoak/Projects/opentelemetry-ruby/examples/logs_sdk
wsmoak logs_sdk $ ruby logs_otlp.rb
Resolving dependencies...
Fetching gem metadata from https://rubygems.org/..
E, [2024-12-15T19:10:02.812695 #81798] ERROR -- : OpenTelemetry error: invalid log record attribute key type Symbol on record: 'Thuja plicata with symbol attribute key'

Collector output from running the code above

$ cat collector-output.txt | grep -3 Thuja
--
Timestamp: 2024-12-16 00:10:02.81267 +0000 UTC
SeverityText: INFO
SeverityNumber: Unspecified(0)
Body: Str(Thuja plicata with symbol attribute key)
Attributes:
     -> cedar: Bool(true)
Trace ID:

Questions / Next Steps

  1. Why are symbols forbidden as keys on trace-related attributes?
  2. Should this reasoning extend to logs?
  3. If the reasoning should extend to logs, update the code to reject attributes with symbols as keys and update the error message to state that strings are required
  4. If the reasoning should not extend to logs, remove the error message
@kaylareopelle kaylareopelle added bug Something isn't working logs labels Dec 16, 2024
@kaylareopelle
Copy link
Contributor Author

Notes from SIG:

  1. Symbols for keys: A lot of this has to do with the spec, ultimately, using a frozen string as a key ends up being more efficient; converting a symbol to a string will create garbage for all those conversions, whereas if you have a frozen string to begin with, you don't need to convert; so no garbage is created.

If that can be disproven, then we could have a discussion around allowing Symbols; this is already working and could be more natural for Rubyists.

By allowing Symbols, we may be enabling users to make OpenTelemetry less efficient

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working logs
Projects
Status: No status
Development

No branches or pull requests

1 participant