opentelemetry-java
                                
                                
                                
                                    opentelemetry-java copied to clipboard
                            
                            
                            
                        Allow logs to be mutated by LogProcessor
Implements spec PR#2681. Resolves #4550.
Summary:
- Rename 
LogBuildertoLogRecordBuilderto better reflect the data model and the naming we can expect to see in the log appender / event API. - Change 
LogProcessor#emittoonEmitto better match trace SDK. - Introduce 
ReadWriteLogRecordinterface, which is passed toLogProcessor#onEmitinstead ofLogData. This is roughly aligned with tracing. However, in tracingReadWriteSpanextendsSpanandReadableSpan. This separation ofSpanfor updating andReadableSpanfor reading isn't needed in the log SDK because there isn't aLogProcessoronStartandonEndwhich have different read / write semantics. ReadWriteLogRecordhas atoLogData()method, which is called by the simple and batch log processor to convert the data to an immutable representation before callingLogExporter#export(Collection<LogData>).- Add single attribute setters (
setAttribute(AttributeKey<T>, T)), rename multi attribute setter tosetAllAttributes(Attributes)to mirror tracing 
Codecov Report
Merging #4643 (caff25a) into main (77be2e0) will decrease coverage by
0.01%. The diff coverage is83.33%.
@@             Coverage Diff              @@
##               main    #4643      +/-   ##
============================================
- Coverage     90.08%   90.06%   -0.02%     
- Complexity     5074     5085      +11     
============================================
  Files           584      586       +2     
  Lines         15667    15707      +40     
  Branches       1504     1507       +3     
============================================
+ Hits          14114    14147      +33     
- Misses         1100     1103       +3     
- Partials        453      457       +4     
| Impacted Files | Coverage Δ | |
|---|---|---|
| ...n/java/io/opentelemetry/sdk/logs/LogProcessor.java | 85.71% <ø> (ø) | 
|
| ...lemetry/sdk/logs/SdkLogEmitterProviderBuilder.java | 100.00% <ø> (ø) | 
|
| ...va/io/opentelemetry/sdk/logs/LogRecordBuilder.java | 60.00% <60.00%> (ø) | 
|
| .../opentelemetry/sdk/logs/SdkReadWriteLogRecord.java | 80.00% <80.00%> (ø) | 
|
| ...entelemetry/sdk/logs/export/BatchLogProcessor.java | 88.72% <85.71%> (ø) | 
|
| ...io/opentelemetry/sdk/logs/SdkLogRecordBuilder.java | 97.50% <92.85%> (ø) | 
|
| ...a/io/opentelemetry/sdk/logs/MultiLogProcessor.java | 90.90% <100.00%> (ø) | 
|
| ...va/io/opentelemetry/sdk/logs/NoopLogProcessor.java | 100.00% <100.00%> (ø) | 
|
| .../java/io/opentelemetry/sdk/logs/SdkLogEmitter.java | 100.00% <100.00%> (ø) | 
|
| ...ntelemetry/sdk/logs/export/SimpleLogProcessor.java | 88.57% <100.00%> (ø) | 
|
| ... and 1 more | 
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.
Hey @jkwatson - wondering what your thoughts are about trying to get this in before the 1.17.0 release. It technically depends on this spec PR, but I think its extremely likely that the spec goes in this direction and that its current state of not allowing mutable logs is accidental. Additionally, both the spec and the sdk are experimental so I think its ok for us to experiment (within reason!).