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

Make LogRecord fields private and add getters for encapsulation #2314

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

lalitb
Copy link
Member

@lalitb lalitb commented Nov 21, 2024

Changes

The PR refactors the LogRecord struct by making all its fields crate-private for better abstraction. Public getter methods have been added to provide controlled access to the fields.

TBD - Will add changelog, if the changes are agreed.

Merge requirement checklist

  • CONTRIBUTING guidelines followed
  • Unit tests added/updated (if applicable)
  • Appropriate CHANGELOG.md files updated for non-trivial, user-facing changes
  • Changes in public API reviewed (if applicable)

@lalitb lalitb requested a review from a team as a code owner November 21, 2024 00:17
#[inline]
pub fn target(&self) -> Option<&Cow<'static, str>> {
self.target.as_ref()
}
Copy link
Member Author

@lalitb lalitb Nov 21, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Returning &str would simplify the API, but want to preserve the ability for consumers(i.e., exporter) to optimize based on whether the target is a static string.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we could favor simplicity of the API here and use &str as the return type. The current exporters that we have cannot utilize the static str reference to their benefit anyway.

Only exporters that would benefit from Cow<'static, str> would be the ones that hold these values in memory for some reason as they could then avoid the cost to clone a static str.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a strong opinion here as it's mainly used by exporters and not end users. We can expect exporter authors to work with Cow<'static,str>.

Copy link
Member Author

@lalitb lalitb Nov 24, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not a strong opinion here as it's mainly used by exporters and not end users. We can expect exporter authors to work with Cow<'static,str>.

Yes, that's what I thought - keeping it for the custom export authors if they want to reap the benefit of static target. Existing exporter (in main and contrib repo) won't get the benefit as they serialize the data to be sent across.

Copy link

codecov bot commented Nov 21, 2024

Codecov Report

Attention: Patch coverage is 85.24590% with 9 lines in your changes missing coverage. Please review.

Project coverage is 79.5%. Comparing base (465fcc2) to head (4507e16).

Files with missing lines Patch % Lines
opentelemetry-stdout/src/logs/exporter.rs 0.0% 8 Missing ⚠️
opentelemetry-proto/src/transform/logs.rs 92.3% 1 Missing ⚠️
Additional details and impacted files
@@          Coverage Diff          @@
##            main   #2314   +/-   ##
=====================================
  Coverage   79.5%   79.5%           
=====================================
  Files        123     123           
  Lines      21258   21275   +17     
=====================================
+ Hits       16905   16924   +19     
+ Misses      4353    4351    -2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.


🚨 Try these New Features:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants