/// <summary> /// Initializes a new instance of the <see cref="RuntimeApiTraceLog"/> class. /// </summary> internal RuntimeApiTraceLog(RuntimeApiTraceLog parent, string methodFullName, Dictionary<string, object> methodParameters, DateTime? entryStamp) { this.Parent = parent; this.MethodFullName = methodFullName; this.MethodParameters = methodParameters; this.EntryStamp = entryStamp; this.Children = new List<RuntimeApiTraceLog>(); }
/// <summary> /// To the trace log. /// </summary> /// <param name="methodInfo">The method information.</param> /// <param name="parameters">The parameters.</param> /// <param name="parent">The parent.</param> /// <param name="entryStamp">The entry stamp.</param> /// <returns>Beyova.ApiTracking.RuntimeApiTraceLog.</returns> internal static RuntimeApiTraceLog ToTraceLog(this MethodInfo methodInfo, List<object> parameters, RuntimeApiTraceLog parent, DateTime? entryStamp = null) { if (methodInfo != null) { return new RuntimeApiTraceLog(parent, methodInfo.GetFullName(), ToMethodParameters(methodInfo, parameters.ToArray()), entryStamp); } return null; }
/// <summary> /// To the trace log. /// </summary> /// <param name="context">The context.</param> /// <param name="parent">The parent.</param> /// <param name="entryStamp">The entry stamp.</param> /// <returns>Beyova.ApiTracking.ApiTraceLog.</returns> internal static RuntimeApiTraceLog ToTraceLog(this RuntimeContext context, RuntimeApiTraceLog parent, DateTime? entryStamp = null) { if (context != null) { return new RuntimeApiTraceLog(parent, context.ApiMethod?.GetFullName(), new Dictionary<string, object> { { "UrlParameter",context.IsActionUsed ? context.Parameter2 : context.Parameter1} }, entryStamp); } return null; }
/// <summary> /// Disposes this instance. /// </summary> public static void Dispose() { _current = null; _root = null; TraceId = null; }
/// <summary> /// Converts the API trace log piece. /// </summary> /// <param name="apiTraceLog">The API trace log.</param> /// <returns>ApiTraceLogPiece.</returns> private static ApiTraceLogPiece ConvertApiTraceLogPiece(RuntimeApiTraceLog apiTraceLog) { if (apiTraceLog != null) { var result = new ApiTraceLogPiece { EntryStamp = apiTraceLog.EntryStamp, Exception = apiTraceLog.Exception, ExitStamp = apiTraceLog.ExitStamp, MethodFullName = apiTraceLog.MethodFullName, MethodParameters = apiTraceLog.MethodParameters }; foreach (var one in apiTraceLog.Children) { result.InnerTraces.Add(ConvertApiTraceLog(one)); } return result; } return null; }
/// <summary> /// Initializes the specified context. /// </summary> /// <param name="context">The context.</param> /// <param name="traceId">The trace identifier.</param> /// <param name="entryStamp">The entry stamp.</param> internal static void Initialize(RuntimeContext context, string traceId, DateTime? entryStamp = null) { if (!string.IsNullOrWhiteSpace(traceId)) { _root = _current = context.ToTraceLog(null, entryStamp); TraceId = traceId; } }
/// <summary> /// Enters the specified trace log. /// </summary> /// <param name="traceLog">The trace log.</param> internal static void Enter(RuntimeApiTraceLog traceLog) { if (traceLog != null) { if (_root != null) { traceLog.Parent = _current; _current.Children.Add(traceLog); _current = traceLog; } } }
/// <summary> /// Initializes the specified method. /// </summary> /// <param name="method">The method.</param> /// <param name="traceId">The trace identifier.</param> /// <param name="parameters">The parameters.</param> /// <param name="entryStamp">The entry stamp.</param> public static void Initialize(MethodInfo method, string traceId, List<object> parameters, DateTime? entryStamp = null) { if (!string.IsNullOrWhiteSpace(traceId)) { _root = _current = method.ToTraceLog(parameters, null, entryStamp); TraceId = traceId; } }
/// <summary> /// To the trace log. /// </summary> /// <param name="methodCallMessage">The method call message.</param> /// <param name="parent">The parent.</param> /// <param name="entryStamp">The entry stamp.</param> /// <returns>Beyova.ApiTracking.RuntimeApiTraceLog.</returns> internal static RuntimeApiTraceLog ToTraceLog(this IMethodCallMessage methodCallMessage, RuntimeApiTraceLog parent, DateTime? entryStamp = null) { if (methodCallMessage != null) { return new RuntimeApiTraceLog(parent, methodCallMessage.MethodBase.GetFullName(), methodCallMessage.ToMethodParameters(), entryStamp); } return null; }