三、日志工具 SeriLog

帖子优先:

https://blog.csdn.net/Upgrader/article/details/88323907

https://www.cnblogs.com/cgzl/p/7616906.html

 

看完开干

引入nuget包:

1)Serilog

2)Serilog.Sinks.File

3)AutofacSerilogIntegration

极简主义,我们不引入Serilog.Sinks.Console 和Serilog.AspNetCore ,有File就够用了,只不过日志输出的方式不同,想了解所有Sinks,请点击这里 https://github.com/serilog/serilog/wiki/Provided-Sinks

 

我们建的是web api项目,所以Serilog.AspNetCore不会用到

 

AutofacSerilogIntegration是Serilog的Autofac集成库

 

引入完毕

三、日志工具 SeriLog_第1张图片

StartUp文件里的 ConfigureServices方法里添加

// 配置 Serilog Log.Logger = new LoggerConfiguration() // 最小的日志输出级别 .MinimumLevel.Information() // 日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .Enrich.FromLogContext() // 配置日志输出到文件,文件输出到当前项目的 logs 目录下 // 日记的生成周期为每天 .WriteTo.File(Path.Combine("logs", @"log.txt"), rollingInterval: RollingInterval.Day) // 创建 logger .CreateLogger();

 

然后到上一节中的AutofacModule.cs进行配置:

builder.RegisterLogger(autowireProperties: true);

Controller里这样调用

public ILogger _logger; public ValuesController(ILogger _logger) { this._logger = _logger; } // GET api/values [HttpGet] public ActionResult> Get() { _logger.Information("Serilog test info."); _logger.Error("Serilog test error."); return new string[] { "value1", "value2" }; }

或这样调用

// GET api/values [HttpGet] public ActionResult> Get() { using (var scopr = Startup.AutofacContainer.BeginLifetimeScope()) { var _logger = scopr.Resolve(); _logger.Information("Serilog test info."); _logger.Error("Serilog test error."); } return new string[] { "value1", "value2" }; }

 

OK,运行一下,在工程目录里找到日志文件,日志输出如下:

三、日志工具 SeriLog_第2张图片

至于如何输出有堆栈信息的格式化日志,本节不深入研究,后面根据进行的情况,如有需要再增加,想提前了解下, 可以阅读下面这篇帖子。

https://www.colabug.com/5304251.html

 

2019/06/17 10:47

你可能感兴趣的:(.net,Core,Api)