예제 #1
0
 /// <summary>
 /// 将通过 <see cref="Trace"/> 记录的内容转发到日志
 /// </summary>
 public static IServiceProvider TraceListenerToLogger(this IServiceProvider serviceProvider)
 {
     if (serviceProvider?.GetService(typeof(ILoggerFactory)) is ILoggerFactory factory)
     {
         var categoryName = TypeNameHelper.GetTypeDisplayName(typeof(TraceListener));
         var logger       = factory.CreateLogger(categoryName);
         if (Listeners.OfType <LoggerTraceListener>().Any(x => x.Logger == logger) == false)
         {
             Listeners.Add(new LoggerTraceListener(logger));
         }
     }
     return(serviceProvider);
 }
예제 #2
0
        protected override void Dispose(bool disposing)
        {
            if (Context != null && !Context.IsDisposed)
            {
                foreach (var dis in Listeners.OfType <IDisposable>())
                {
                    try {
                        dis.Dispose();
                    } catch {
                        // Don't care
                    }
                }
            }
            Listeners.Clear();

            RenderContext.Dispose();
            UpdateTimer.Dispose();
            _stopwatch.Stop();
            base.Dispose(disposing);
        }