/// <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); }
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); }