| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | 
							- using Serilog;
 
- using Serilog.Core;
 
- using Serilog.Events;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Diagnostics;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- namespace Ips.Library.Basic
 
- {
 
-     public static class SerilogHelper
 
-     {
 
-         public static void BuildLogger(bool usePID)
 
-         {
 
-             string outputTemplate;
 
-             if (usePID)
 
-                 outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff}[线程={ThreadId}][PID={PID}][{Level:u3}]{Message:lj}{NewLine}\t{Exception}";
 
-             else
 
-                 outputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss.fff}[线程={ThreadId}][{Level:u3}]{Message:lj}{NewLine}\t{Exception}";
 
-             Serilog.Log.Logger = new Serilog.LoggerConfiguration()
 
-                 .Enrich.FromLogContext()
 
-                 .Enrich.With(new SerilogEnricher(usePID))
 
-                 .WriteTo.Console(outputTemplate: outputTemplate)
 
-                 .WriteTo.Logger(p => p.Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Information)
 
-                     .WriteTo.File("Logs\\Info\\.log", rollingInterval: Serilog.RollingInterval.Day, outputTemplate: outputTemplate))
 
-                 .WriteTo.Logger(p => p.Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Warning)
 
-                     .WriteTo.File("Logs\\Warning\\.log", rollingInterval: Serilog.RollingInterval.Day, outputTemplate: outputTemplate))
 
-                 .WriteTo.Logger(p => p.Filter.ByIncludingOnly(e => e.Level == Serilog.Events.LogEventLevel.Error)
 
-                     .WriteTo.File("Logs\\Error\\.log", rollingInterval: Serilog.RollingInterval.Day, outputTemplate: outputTemplate))
 
-                 .CreateLogger();
 
-         }
 
-     }
 
-     /// <summary>
 
-     /// Serilog日志添加线程ID
 
-     /// </summary>
 
-     public class SerilogEnricher : ILogEventEnricher
 
-     {
 
-         private bool useProcessId;
 
-         private string PID;
 
-         public SerilogEnricher(bool useProcessId = false)
 
-         {
 
-             this.useProcessId = useProcessId;
 
-             if (useProcessId)
 
-             {
 
-                 this.PID = Process.GetCurrentProcess().Id.ToString("D5");
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 在日志中添加线程ID
 
-         /// </summary>
 
-         /// <param name="logEvent"></param>
 
-         /// <param name="propertyFactory"></param>
 
-         public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
 
-         {
 
-             logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty(
 
-               "ThreadId", Thread.CurrentThread.ManagedThreadId.ToString("D3")));
 
-             if (useProcessId)
 
-             {
 
-                 logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("PID", PID));
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |