代码改变世界

Serilog开源日志框架

2019-03-01 14:42  huoit  阅读(104)  评论(0编辑  收藏  举报

 

1.安装包

Serilog.AspNetCore

滚动输出到文件

Serilog.Sinks.RollingFile

2.代码

 Worker Service项目为例,修改代码

        public static void Main(string[] args)
        {
            var configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json")
                .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("DOTNET_ENVIRONMENT") ?? "Production"}.json", true)
                .Build();
            // 全局共享的日志记录器
            Log.Logger = new LoggerConfiguration()
                .ReadFrom.Configuration(configuration)
                .Enrich.FromLogContext()
                .CreateLogger();

            try
            {
                var separator = new string('-', 30);

                Log.Information($"{separator} Starting host {separator} ");

                CreateHostBuilder(args).Build().Run();

                Log.Information($"{separator} Exit host {separator} ");
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
            }
            finally
            {
                Log.CloseAndFlush(); // 释放资源
            }
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<Worker>();
                })
            .UseSerilog();
    }

 

 3.配置appsettings.json

 

  "Serilog": {
    "MinimalLevel": {
      "Default": "Debug",//最小日志级别
      "Override": {
        "System": "Information",
        "Microsoft": "Information"
      }
    },
    "Enrich": [
      "WithMachineName",
      "WithProcessId",
      "WithProcessName",
      "WithThreadId"
    ],
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss,fff} [{Level}] {Message:lj}{NewLine}{Exception}"
        }
      },
      {
        "Name": "RollingFile",
        "Args": {
          "pathFormat": "log\\{Hour}.log",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss,fff} [{Level}] {Message:lj}{NewLine}{Exception}",
          "fileSizeLimitBytes": 5242880, //单个日志文件大小
          "retainedFileCountLimit": 10 ,//日志保留最大数量
          //"formatter": "Serilog.Formatting.Json.JsonFormatter, Serilog" //日志格式化格式
        }
      }
    ]
  }

 

 也可以输出到邮件、数据库、ES等

 

 

 

 

 

官方文档:

Github:https://github.com/serilog