示例#1
0
        public static void Start()
        {
            lock (syncLock)
            {
                IPEndPoint traceEP;
                IPAddress  traceAdapter;
                Config     config;
                string[]   enableConfig;
                int        pos;
                int        detail;
                string     subsystem;

                config       = new Config("Diagnostics");
                traceEP      = config.Get("TraceEP", new IPEndPoint(Helper.ParseIPAddress(DefTraceGroup), DefTracePort));
                traceAdapter = config.Get("TraceAdapter", IPAddress.Any);

                if (traceSrc != null)
                {
                    traceSrc.Stop(null);
                    traceSrc = null;
                }

                traceSrc = new NetTrace();
                traceSrc.Start(traceEP, traceAdapter);

                tracePause   = false;
                traceEnable  = new Dictionary <string, int>();
                enableConfig = config.GetArray("TraceEnable");

                for (int i = 0; i < enableConfig.Length; i++)
                {
                    string s = enableConfig[i];

                    try
                    {
                        pos = s.IndexOf(':');
                        if (pos == -1)
                        {
                            throw new Exception();
                        }

                        detail = int.Parse(s.Substring(0, pos));
                        if (detail < 0 || detail > 255)
                        {
                            throw new Exception();
                        }

                        subsystem = s.Substring(pos + 1);

                        traceEnable[subsystem.ToLowerInvariant()] = detail;
                    }
                    catch
                    {
                        SysLog.LogError("Invalid trace config: Diagnostics.TraceEP[{0}] = {1}", i, s);
                    }
                }
            }
        }
示例#2
0
        public static void Stop()
        {
            lock (syncLock)
            {
                if (traceSrc != null)
                {
                    traceSrc.Stop(null);
                }

                traceSrc    = null;
                traceEnable = null;
            }
        }