1
1
use opentelemetry:: {
2
2
logs:: { AnyValue , LogRecord , Logger , LoggerProvider , Severity } ,
3
- InstrumentationScope , Key ,
3
+ Key ,
4
4
} ;
5
- use std:: borrow:: Cow ;
6
5
use tracing_core:: Level ;
7
6
#[ cfg( feature = "experimental_metadata_attributes" ) ]
8
7
use tracing_core:: Metadata ;
9
8
#[ cfg( feature = "experimental_metadata_attributes" ) ]
10
9
use tracing_log:: NormalizeEvent ;
11
10
use tracing_subscriber:: { registry:: LookupSpan , Layer } ;
12
11
13
- const INSTRUMENTATION_LIBRARY_NAME : & str = "opentelemetry-appender-tracing" ;
14
-
15
12
/// Visitor to record the fields from the event record.
16
13
struct EventVisitor < ' a , LR : LogRecord > {
17
14
log_record : & ' a mut LR ,
@@ -135,12 +132,13 @@ where
135
132
L : Logger + Send + Sync ,
136
133
{
137
134
pub fn new ( provider : & P ) -> Self {
138
- let scope = InstrumentationScope :: builder ( INSTRUMENTATION_LIBRARY_NAME )
139
- . with_version ( Cow :: Borrowed ( env ! ( "CARGO_PKG_VERSION" ) ) )
140
- . build ( ) ;
141
-
142
135
OpenTelemetryTracingBridge {
143
- logger : provider. logger_with_scope ( scope) ,
136
+ // Using empty scope name.
137
+ // The name/version of this library itself can be added
138
+ // as a Scope attribute, once a semantic convention is
139
+ // defined for the same.
140
+ // See https://github.com/open-telemetry/semantic-conventions/issues/1550
141
+ logger : provider. logger ( "" ) ,
144
142
_phantom : Default :: default ( ) ,
145
143
}
146
144
}
@@ -349,8 +347,18 @@ mod tests {
349
347
. expect ( "Atleast one log is expected to be present." ) ;
350
348
351
349
// Validate common fields
352
- assert_eq ! ( log. instrumentation. name( ) , "opentelemetry-appender-tracing " ) ;
350
+ assert_eq ! ( log. instrumentation. name( ) , "" ) ;
353
351
assert_eq ! ( log. record. severity_number( ) , Some ( Severity :: Error ) ) ;
352
+ // Validate target
353
+ assert_eq ! (
354
+ log. record. target( ) . expect( "target is expected" ) . to_string( ) ,
355
+ "my-system"
356
+ ) ;
357
+ // Validate event name
358
+ assert_eq ! (
359
+ log. record. event_name( ) . expect( "event_name is expected" ) ,
360
+ "my-event-name"
361
+ ) ;
354
362
355
363
// Validate trace context is none.
356
364
assert ! ( log. record. trace_context( ) . is_none( ) ) ;
@@ -399,6 +407,39 @@ mod tests {
399
407
assert ! ( attributes_key. contains( & Key :: new( "code.lineno" ) ) ) ;
400
408
assert ! ( !attributes_key. contains( & Key :: new( "log.target" ) ) ) ;
401
409
}
410
+
411
+ // Test when target, eventname are not explicitly provided
412
+ exporter. reset ( ) ;
413
+ error ! (
414
+ event_id = 20 ,
415
+ user_name = "otel" ,
416
+
417
+ ) ;
418
+ assert ! ( logger_provider. force_flush( ) . is_ok( ) ) ;
419
+
420
+ // Assert TODO: move to helper methods
421
+ let exported_logs = exporter
422
+ . get_emitted_logs ( )
423
+ . expect ( "Logs are expected to be exported." ) ;
424
+ assert_eq ! ( exported_logs. len( ) , 1 ) ;
425
+ let log = exported_logs
426
+ . first ( )
427
+ . expect ( "Atleast one log is expected to be present." ) ;
428
+
429
+ // Validate target - tracing defaults to module path
430
+ assert_eq ! (
431
+ log. record. target( ) . expect( "target is expected" ) . to_string( ) ,
432
+ "opentelemetry_appender_tracing::layer::tests"
433
+ ) ;
434
+ // Validate event name - tracing defaults to event followed source & line number
435
+ // Assert is doing "contains" check to avoid tests failing when line number changes.
436
+ // and also account for the fact that the module path is different on different platforms.
437
+ // Ex.: The path will be different on a Windows and Linux machine.
438
+ assert ! ( log
439
+ . record
440
+ . event_name( )
441
+ . expect( "event_name is expected" )
442
+ . contains( "event opentelemetry-appender-tracing" ) , ) ;
402
443
}
403
444
404
445
#[ test]
@@ -443,8 +484,18 @@ mod tests {
443
484
. expect ( "Atleast one log is expected to be present." ) ;
444
485
445
486
// validate common fields.
446
- assert_eq ! ( log. instrumentation. name( ) , "opentelemetry-appender-tracing " ) ;
487
+ assert_eq ! ( log. instrumentation. name( ) , "" ) ;
447
488
assert_eq ! ( log. record. severity_number( ) , Some ( Severity :: Error ) ) ;
489
+ // Validate target
490
+ assert_eq ! (
491
+ log. record. target( ) . expect( "target is expected" ) . to_string( ) ,
492
+ "my-system"
493
+ ) ;
494
+ // Validate event name
495
+ assert_eq ! (
496
+ log. record. event_name( ) . expect( "event_name is expected" ) ,
497
+ "my-event-name"
498
+ ) ;
448
499
449
500
// validate trace context.
450
501
assert ! ( log. record. trace_context( ) . is_some( ) ) ;
@@ -584,7 +635,7 @@ mod tests {
584
635
drop ( tracing_log:: LogTracer :: init ( ) ) ;
585
636
586
637
// Act
587
- log:: error!( target : "my-system" , "log from log crate" ) ;
638
+ log:: error!( "log from log crate" ) ;
588
639
assert ! ( logger_provider. force_flush( ) . is_ok( ) ) ;
589
640
590
641
// Assert TODO: move to helper methods
@@ -597,8 +648,19 @@ mod tests {
597
648
. expect ( "Atleast one log is expected to be present." ) ;
598
649
599
650
// Validate common fields
600
- assert_eq ! ( log. instrumentation. name( ) , "opentelemetry-appender-tracing " ) ;
651
+ assert_eq ! ( log. instrumentation. name( ) , "" ) ;
601
652
assert_eq ! ( log. record. severity_number( ) , Some ( Severity :: Error ) ) ;
653
+ // Target and EventName from Log crate are "log" and "log event" respectively.
654
+ // Validate target
655
+ assert_eq ! (
656
+ log. record. target( ) . expect( "target is expected" ) . to_string( ) ,
657
+ "log"
658
+ ) ;
659
+ // Validate event name
660
+ assert_eq ! (
661
+ log. record. event_name( ) . expect( "event_name is expected" ) ,
662
+ "log event"
663
+ ) ;
602
664
603
665
// Validate trace context is none.
604
666
assert ! ( log. record. trace_context( ) . is_none( ) ) ;
@@ -676,7 +738,7 @@ mod tests {
676
738
. expect ( "Atleast one log is expected to be present." ) ;
677
739
678
740
// validate common fields.
679
- assert_eq ! ( log. instrumentation. name( ) , "opentelemetry-appender-tracing " ) ;
741
+ assert_eq ! ( log. instrumentation. name( ) , "" ) ;
680
742
assert_eq ! ( log. record. severity_number( ) , Some ( Severity :: Error ) ) ;
681
743
682
744
// validate trace context.
0 commit comments