22using OpenTracing . Propagation ;
33using System ;
44using System . Collections . Generic ;
5+ using System . Reflection ;
56using System . Threading ;
67
78namespace Datadog . Tracer
@@ -18,13 +19,13 @@ internal class Tracer : ITracer, IDatadogTracer
1819 public Tracer ( IAgentWriter agentWriter , List < ServiceInfo > serviceInfo = null , string defaultServiceName = null )
1920 {
2021 _agentWriter = agentWriter ;
21- // TODO:bertrand be smarter about the service name
22- _defaultServiceName = defaultServiceName ?? Constants . UnkownService ;
23- if ( _defaultServiceName == Constants . UnkownService )
22+ _defaultServiceName = defaultServiceName ;
23+ if ( _defaultServiceName == null )
2424 {
25- _services [ Constants . UnkownService ] = new ServiceInfo
25+ _defaultServiceName = GetExecutingAssemblyName ( ) ?? Constants . UnkownService ;
26+ _services [ _defaultServiceName ] = new ServiceInfo
2627 {
27- ServiceName = Constants . UnkownService ,
28+ ServiceName = _defaultServiceName ,
2829 App = Constants . UnkownApp ,
2930 AppType = Constants . WebAppType ,
3031 } ;
@@ -42,6 +43,19 @@ public Tracer(IAgentWriter agentWriter, List<ServiceInfo> serviceInfo = null, st
4243 }
4344 }
4445
46+ private string GetExecutingAssemblyName ( )
47+ {
48+ try
49+ {
50+ var name = Assembly . GetExecutingAssembly ( ) . GetName ( ) ;
51+ return name . Name ;
52+ }
53+ catch
54+ {
55+ return null ;
56+ }
57+ }
58+
4559 public ISpanBuilder BuildSpan ( string operationName )
4660 {
4761 return new SpanBuilder ( this , operationName ) ;
0 commit comments