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
1、如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
2、欢迎各位转载,但是未经作者本人同意,转载文章请在文章页面明显位置标明作者和原文连接,否则保留追究法律责任的权利。
作者博客: http://www.cnblogs.com/xmai/