使用 Serilog 框架记录日志
2023/7/6 02:13:38
"Serilog 是一个用于.NET应用程序的日志记录开源库,配置简单,接口干净,并可运行在最新的.NET平台上,与其他日志库不同, Serilog 是以功能强大的结构化事件数据为基础构建的, 支持将日志输出到控制台、文件、数据库和其它更多的方式,支持参数化日志模板,非常灵活。
接下来零度带大家在控制台程序中实践一下 Serilog 框架的简单配置,首先,使用 NuGet 方式安装 Serilog 核心库,其次安装控制台输出扩展库,如果你想将日志输出到其它存储介质,可安装其它扩展库,Serilog支持的扩展库是很多的。
Install-Package Serilog
Install-Package Serilog.Sinks.Console
```
然后引用命名空间:
`using Serilog;`
使用 LoggerConfiguration 创建 ILogger 对象:
var log = new LoggerConfiguration()
.WriteTo.Console()
.CreateLogger();
```
一般情况下,我们在整个应用程序中使用同一个 ILogger 对象就可以了,所以在首次启动的时候初始化即可。接下来就可以写日志了。
log.Information(""Hello, 零度!"");
如果您想在全局使用日志记录器,那么可以通过下面的方式将当前的日志记录器设置为全局对象,以后就可以当前程序的任何地方使用这个记录器了。
Log.Logger = log;
Log.Information(""The global logger has been configured"");
```
下面的示例将日志同时输出到控制台和文件中,而且日志最小记录级别设置为调试模式,首先安装程序库:
Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File
```
在控制台中配置日志记录器,在 ASP.NET Core 中的配置类似:
using System;
using Serilog;
namespace SerilogExample
{
class Program
{
static void Main()
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File(""logs\\myapp.txt"", rollingInterval: RollingInterval.Day)
.CreateLogger();
Log.Information(""Hello, world!"");
int a = 10, b = 0;
try
{
Log.Debug(""Dividing {A} by {B}"", a, b);
Console.WriteLine(a / b);
}
catch (Exception ex)
{
Log.Error(ex, ""Something went wrong"");
}
Log.CloseAndFlush();
Console.ReadKey();
}
}
}
```
运行这个控制台应用程序,即可输出有颜色的控制台日志。这里只是一个最简单不过的配置, Serilog 框架的配置是非常灵活的,您想了解更详细的配置方法,可参阅[官方文档](https://github.com/serilog/serilog/wiki/Getting-Started)进行学习。
关于 Serilog 框架非常不错的博客整理:
[结构化日志类库-Serilog](https://www.cnblogs.com/mq0036/p/8479956.html ""使用 Serilog 框架记录日志"")"