在.NetCore中简单使用Serilog日志
目前都比较流行使用 Serilog, 官网url: https://serilog.net/
1:Nuget包
============公司一***项目中新增如下Nuget依赖=====================
<PackageReference Include="Serilog.Extensions.Hosting" Version="3.1.0" />
<PackageReference Include="Serilog.Sinks.Async" Version="1.4.0" />
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
<PackageReference Include="Serilog.Sinks.Elasticsearch" Version="8.2.0" /> //写入到 Elasticsearch log
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
2:Serilog 简单使用
public static int Main(string[] args) { try { Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug()//最小等级 // .MinimumLevel.Error() .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) .Enrich.FromLogContext()//需要加上,来自日志的上下文 .WriteTo.Console()//写到控制台,调式时比较直观 .WriteTo.Async(c => c.File("Logs/logs.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 1024 * 1024 * 2, retainedFileCountLimit: 60)) .CreateLogger(); Log.Information("=========Starting web host=========="); CreateHostBuilder(args).Build().Run(); return 0; } catch (Exception ex) { Log.Fatal(ex, "Host terminated unexpectedly!"); return 1; } finally { Log.CloseAndFlush(); } }
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((hostingContext, builder) => { //过滤掉系统默认的一些日志 builder.AddFilter("System", LogLevel.Information); builder.AddFilter("Microsoft", LogLevel.Information); builder.AddConsole(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(c => { c.Limits.MaxRequestBodySize = 1024 * 1024 * 300; }); webBuilder.UseUrls("http://*:6666"); webBuilder.UseStartup<Startup>(); }) .UseSerilog();
3:简单说明
//自动生成60个文件回滚,默认为31个文件 WriteTo.Async(c => c.File("Logs/logs.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 1024 * 1024 * 2, retainedFileCountLimit: 60)) //==第一次启动时会自动创建 Logs/logs.txt
在控制器中也想使用日志怎么办?我们只需要在Controller构造函数中 直接使用Microsoft自带的 log来注入即可使用,非常方便
4:怎么知道是否配置或自启动ok?
5:Docker 挂载一下
6:效果
如有疑问或者错误的地方,请跟帖,本人会第一时间答复以及相互学习,谢谢!个人会不断的上传自己的学习心得!
好了今天就先到这里,下次有时间再更新,如果存在不合理的地方,欢迎大家多多指教留言!!!