Skip to content

Commit 554f77c

Browse files
committed
get stackify.agent callcontext via reflection
1 parent 3397f8e commit 554f77c

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Src/StackifyLib/Internal/Logs/LogQueue.cs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
using System;
44
using System.Collections.Concurrent;
55
using System.Collections.Generic;
6+
using System.Diagnostics;
67
using System.Linq;
8+
using System.Reflection;
9+
using System.Threading;
710
using System.Threading.Tasks;
811

912
#if NETFULL
@@ -99,6 +102,7 @@ public void QueueLogMessage(Models.LogMsg msg)
99102
// ignore
100103
}
101104

105+
102106
#if NETFULL
103107
try
104108
{
@@ -177,6 +181,41 @@ public void QueueLogMessage(Models.LogMsg msg)
177181
}
178182
}
179183
}
184+
#else
185+
// else if .Net Core
186+
// get RequestID
187+
if (string.IsNullOrEmpty(msg.TransID))
188+
{
189+
var trace = Trace.CorrelationManager.ActivityId;
190+
191+
var q = AppDomain.CurrentDomain.GetAssemblies();
192+
var a = Assembly.GetEntryAssembly().GetReferencedAssemblies();
193+
194+
var s = q.Where(assembly => assembly.FullName.Contains("Stackify.Agent"));
195+
var middleware = s.First();
196+
var midTypes = middleware.GetTypes();
197+
var callContextType = midTypes.Where(type => type.Name.Contains("StackifyCallContext")).First();
198+
var traceCtxType = midTypes.Where(type => type.Name.Contains("TraceContext")).First();
199+
var traceContextProp = callContextType.GetProperty("TraceContext");
200+
var traceFields = Convert.ChangeType(traceContextProp.GetValue(null), traceCtxType);
201+
if(traceFields != null)
202+
{
203+
// var tFields = traceFields.RequestID;
204+
Console.WriteLine("Testing");
205+
}
206+
//var ctxType = Type.GetType("Stackify.Agent.Threading.StackifyCallContext");
207+
208+
209+
// check if using log4net or NLog
210+
/*
211+
var correltionManagerId = CallContext.LogicalGetData("E2ETrace.ActivityID");
212+
213+
if (correltionManagerId != null && correltionManagerId is Guid && ((Guid)correltionManagerId) != Guid.Empty)
214+
{
215+
msg.TransID = correltionManagerId.ToString();
216+
}
217+
*/
218+
}
180219
#endif
181220

182221
_MessageBuffer.Enqueue(msg);

0 commit comments

Comments
 (0)