.net5 Serilog使用

 

一,安装包 Serilog.AspNetCore

  1,startup.cs 添加  // Serilog请求日志中间件---必须在 UseStaticFiles 和 UseRouting 之间

 app.UseSerilogRequestLogging();

 

 2,方式一  在program.cs 

   static string LogFilePath(string LogEvent) => $@"{AppContext.BaseDirectory}\Logs\{LogEvent}\log.log";
   static string SerilogOutputTemplate = "【时间】{Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}【等级】{Level:u3}{NewLine}【消息】{Message:lj}{NewLine}{Exception}{NewLine}";
   

 

在CreateHostBuilder 中添加

.UseSerilog((context, logger) =>
        {
       
            logger.Enrich.FromLogContext();
            logger.WriteTo.Console();//输出到控制台
       logger.MinimumLevel.Debug();// 所有Sink的最小记录级别
       logger.WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Debug).WriteTo.File(LogFilePath("Debug"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate)) .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Information).WriteTo.File(LogFilePath("Information"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate)) .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Warning).WriteTo.File(LogFilePath("Warning"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate)) .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Error).WriteTo.File(LogFilePath("Error"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate)) .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(p => p.Level == LogEventLevel.Fatal).WriteTo.File(LogFilePath("Fatal"), rollingInterval: RollingInterval.Day, outputTemplate: SerilogOutputTemplate)); });

 

3,方式二 读取配置模板

 .UseSerilog((context, logger) =>
        {
            logger.ReadFrom.Configuration(context.Configuration);
            logger.Enrich.FromLogContext();
            logger.WriteTo.Console();
     });

 

appsettings.json

{ 
  "Serilog": {
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
          "Default": "Warning",
        "System": "Warning",
        "Microsoft": "Warning"
      }
    },
    "WriteTo": [
      { "Name": "Console" }, //输出到控制台
      {
        "Name": "Async", //异步写入日志
        "Args": {
          "configure": [
            {
              "Name": "File", //输出文件
              "Args": {
                "path": "logs/.log",
                "outputTemplate": "{NewLine}Date:{Timestamp:yyyy-MM-dd HH:mm:ss.fff}{NewLine}LogLevel:{Level}{NewLine}Class:{SourceContext}{NewLine}Message:{Message}{NewLine}{Exception}",
                "rollingInterval": "3" //日志文件生成精度:1:年  2:月 3:日 4:小时
              }
            }
          ]
        }
      }
      //{
      //  "Name": "Console",
      //  "Args": {
      //    "outputTemplate": "时间{Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}等级{Level:u3}{NewLine}消息{Message:lj}{NewLine}{NewLine}"
      //  }
      //},
      //{
      //  "Name": "File",
      //  "Args": {
      //    "path": "logs/.log",
      //    "rollingInterval": "Day",
      //    "outputTemplate": "【时间】{Timestamp:yyyy-MM-dd HH:mm:ss,fff}{NewLine}【等级】{Level:u3}{NewLine}【消息】{Message:lj}{NewLine}{NewLine}"
      //  }
      //}
    ]
  }

 

 

配置文件模板 输出模板 

SerilogOutputTemplate 中的中文输出乱码问题不知道为啥

 

posted @ 2022-05-09 16:09  qingjiawen  阅读(208)  评论(0编辑  收藏  举报