public void Register(ITracingProvider <T> provider) { if (provider == null) { throw new ArgumentNullException("Tracing provider cannot be null"); } providers.Add(provider); }
private static void LoadProvider() { switch (TracingSettings.Provider.ToLower()) { case "file": _provider = new FileTracingProvider(TracingSettings.Datasource); break; case "con": _provider = new StdErrTracingProvider(); break; //case "db": _provider = new DbTracingProvider(TracingSettings.Datasource); break; default: _provider = null; break; } }
private static void TraceItemWatcher() { string pid; string pname; Process p = Process.GetCurrentProcess(); pid = p.Id.ToString(); pname = p.ProcessName; while (true) { Thread.Sleep(1000); try { TraceItem[] items; lock (_items) { if (_items.Count < 1) { continue; } items = _items.ToArray(); _items.Clear(); } try { for (int i = 0; i < items.Length; ++i) { if (items[i].Level == TracingLevel.Crtitical) { WriteEventLog(string.Concat( pid, items[i].Timestamp.ToString(" @ yyyy-MM-dd HH:mm:ss.fff "), items[i].Logger, Environment.NewLine, Environment.NewLine, items[i].Message, Environment.NewLine, Environment.NewLine, items[i].Error == null ? string.Empty : items[i].Error.ToString() ), true); } } } catch (Exception ex) { Trace.WriteLine(ex); } ITracingProvider provider = _provider; if (provider != null) { provider.Write(pid, pname, Environment.GetEnvironmentVariable("COMPUTERNAME"), items); } } catch (Exception ex) { WriteEventLog(ex.ToString(), true); } } }