예제 #1
0
 public static void Trace <T0, T1, T2>(int lid, TraceType traceType, Guid componentGuid, int traceTag, long id, string format, T0 argument0, T1 argument1, T2 argument2)
 {
     if (ExTraceConfiguration.Instance.ConsoleTracingEnabled)
     {
         StringBuilder stringBuilder = new StringBuilder();
         stringBuilder.AppendFormat("{0}: ", id);
         stringBuilder.AppendFormat(format, argument0, argument1, argument2);
         Console.WriteLine(stringBuilder.ToString());
     }
     if (ExTraceConfiguration.Instance.SystemDiagnosticsTracingEnabled)
     {
         StringBuilder stringBuilder2 = new StringBuilder();
         stringBuilder2.AppendFormat("{0}: ", id);
         stringBuilder2.AppendFormat(format, argument0, argument1, argument2);
         System.Diagnostics.Trace.WriteLine(stringBuilder2.ToString());
     }
     if (ETWTrace.IsEnabled)
     {
         string message;
         try
         {
             message = string.Format(ExTraceInternal.formatProvider, format, new object[]
             {
                 argument0,
                 argument1,
                 argument2
             });
         }
         catch (FormatException ex)
         {
             message = ex.ToString();
         }
         ETWTrace.Write(lid, traceType, componentGuid, traceTag, id, message);
     }
 }
예제 #2
0
 public void TraceError(int lid, long id, string formatString, params object[] args)
 {
     if (ETWTrace.IsInternalTraceEnabled)
     {
         ETWTrace.InternalWrite(lid, TraceType.ErrorTrace, this.category, this.traceTag, id, string.Format(formatString, args));
     }
 }
예제 #3
0
 private ETWTrace()
 {
     ETWTrace.StartTraceSession();
     AppDomain.CurrentDomain.DomainUnload += delegate(object source, EventArgs args)
     {
         ETWTrace.EndTraceSession();
     };
 }
예제 #4
0
 public void TraceEvent(IPerfEventData perfEventData)
 {
     if (ETWTrace.IsEnabled && base.IsTraceEnabled(TraceType.PerformanceTrace))
     {
         int num = 0;
         ETWTrace.WriteBinary(TraceType.PerformanceTrace, this.category, this.traceTag, perfEventData.ToBytes(), out num);
     }
 }
예제 #5
0
 public static void Trace(int lid, TraceType traceType, Guid componentGuid, int traceTag, long id, string message)
 {
     if (ExTraceConfiguration.Instance.ConsoleTracingEnabled)
     {
         Console.WriteLine("{0}: {1}", id, message);
     }
     if (ExTraceConfiguration.Instance.SystemDiagnosticsTracingEnabled)
     {
         System.Diagnostics.Trace.WriteLine(string.Format("{0}: {1}", id, message));
     }
     if (ETWTrace.IsEnabled)
     {
         ETWTrace.Write(lid, traceType, componentGuid, traceTag, id, message);
     }
 }
예제 #6
0
        private static void StartTraceSession()
        {
            IntPtr intPtr;

            ETWTrace.RegisterGuid(ref ETWTrace.componentGuids, out ETWTrace.componentHandle, ETWTrace.ComponentSession.ControlCallback, out intPtr);
            ETWTrace.RegisterGuid(ref ETWTrace.casPerfGuids, out ETWTrace.casPerfHandle, ETWTrace.CasPerfSession.ControlCallback, out intPtr);
            ETWTrace.RegisterGuid(ref ETWTrace.exmonMapiRpcGuids, out ETWTrace.exmonMapiRpcHandle, ETWTrace.ExmonMapiRpcSession.ControlCallback, out ETWTrace.exmonMapiEventHandle);
            ETWTrace.RegisterGuid(ref ETWTrace.exmonAdminRpcGuids, out ETWTrace.exmonAdminRpcHandle, ETWTrace.ExmonAdminRpcSession.ControlCallback, out ETWTrace.exmonAdminEventHandle);
            ETWTrace.RegisterGuid(ref ETWTrace.exmonTaskGuids, out ETWTrace.exmonTaskHandle, ETWTrace.ExmonTaskSession.ControlCallback, out ETWTrace.exmonTaskEventHandle);
            ETWTrace.RegisterGuid(ref ETWTrace.internalTraceGuid, out ETWTrace.internalTraceHandle, ETWTrace.InternalTraceSession.ControlCallback, out intPtr);
            ETWTrace.ComponentSession.OnTraceStateChange     += ETWTrace.InvokeOnTraceStateChange;
            ETWTrace.CasPerfSession.OnTraceStateChange       += ETWTrace.InvokeOnTraceStateChange;
            ETWTrace.ExmonMapiRpcSession.OnTraceStateChange  += ETWTrace.InvokeOnTraceStateChange;
            ETWTrace.ExmonAdminRpcSession.OnTraceStateChange += ETWTrace.InvokeOnTraceStateChange;
            ETWTrace.ExmonTaskSession.OnTraceStateChange     += ETWTrace.InvokeOnTraceStateChange;
            ETWTrace.InternalTraceSession.OnTraceStateChange += ETWTrace.InvokeOnTraceStateChange;
        }
예제 #7
0
        internal static void WriteCas(CasTraceEventType eventType, CasTraceStartStop traceType, Guid serviceProviderRequestID, int bytesIn, int bytesOut, string serverAddress, string userContext, string spOperation, string spOperationData, string clientOperation)
        {
            int num  = (serverAddress.Length + 1) * 2;
            int num2 = (userContext.Length + 1) * 2;
            int num3 = (spOperation.Length + 1) * 2;
            int num4 = (spOperationData.Length + 1) * 2;
            int num5 = (clientOperation.Length + 1) * 2;
            int num6 = 12 + 2 * ETWTrace.GuidByteLength + num + num2 + num3 + num4 + num5;
            int num7 = 8064;

            if (num6 < num7)
            {
                int  num8       = (int)traceType;
                Guid activityId = ETWTrace.GetActivityId();
                Guid events     = ETWTrace.casPerfGuids.Events;
                uint num9       = DiagnosticsNativeMethods.TraceMessage(ETWTrace.CasPerfSession.Session.DangerousGetHandle(), 43U, ref events, (ushort)eventType, ref num8, 4, activityId.ToByteArray(), ETWTrace.GuidByteLength, serviceProviderRequestID.ToByteArray(), ETWTrace.GuidByteLength, ref bytesIn, 4, ref bytesOut, 4, serverAddress, num, userContext, num2, spOperation, num3, spOperationData, num4, clientOperation, num5, IntPtr.Zero, 0);
            }
        }
예제 #8
0
 public static void Write(int lid, TraceType traceType, Guid component, int traceTag, long id, string message)
 {
     ETWTrace.Write(ETWTrace.ComponentSession, lid, traceType, component, traceTag, id, message);
 }
예제 #9
0
 internal static DiagnosticsNativeMethods.EventInstanceInfo CreateExmonTaskInstanceId()
 {
     return(ETWTrace.CreateInstanceId(ETWTrace.exmonTaskEventHandle));
 }