Serilog 是一个用于记录日志的 .NET 库,它提供了一种简单、易于使用和灵活的方法来记录系统和应用程序的事件。以下是 Serilog 的一些特性:
总体来说,Serilog 提供了一个功能强大、灵活并且容易使用的方式,来记录应用程序中产生的各种事件和日志信息。 如果您在开发 .NET 应用程序时需要记录日志,请考虑使用 Serilog
Serilog 的配置包括两个步骤:安装 Serilog 包和配置日志输出。以下是一个简单的 Serilog 配置示例:
首先,您需要通过 NuGet 包管理器或命令行将 Serilog 包添加到项目中:
// 安装
Install-Package Serilog
接下来,在程序启动时进行 Serilog 配置。通常情况下,这可以在 Program.cs 文件中完成。下面是一个基本的 Serilog 配置,将日志信息输出到控制台:
using Serilog;
using Serilog.Events;
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
try
{
Log.Information("Starting application.");
// 执行应用程序代码
}
catch (Exception ex)
{
Log.Fatal(ex, "Application terminated unexpectedly!");
}
finally
{
Log.CloseAndFlush();
}
}
}
以上配置使用 Serilog 对日志记录器进行配置,并指定了最小记录级别(此处为 Debug),将日志发送给控制台,添加了上下文记录处理器。
这是一个非常基本的 Serilog 配置示例,您可以根据需要进行调整。例如,您可以将日志输出到不同的目标、格式化其输出或对日志事件进行筛选、格式化。
如果您想将 Serilog 日志输出到数据库,可以使用 Serilog.Sinks.MSSqlServer 包。 以下是一个将 Serilog 输出到数据库的配置示例:
首先,安装 Serilog 和 Serilog.Sinks.MSSqlServer 包:
Install-Package Serilog
Install-Package Serilog.Sinks.MSSqlServer
在 appsettings.json 文件中添加数据库连接字符串和其他 Serilog 配置选项:
{
"Serilog": {
"MinimumLevel": {
"Default": "Debug",
"Override": {
"Microsoft": "Information"
}
},
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=.;Database=MyDb;Integrated Security=True",
"tableName": "Logs",
"autoCreateSqlTable": true
}
}
]
}
}
此示例指定了数据库连接字符串,并将日志消息记录在名为 Logs 的表格中。
在应用程序启动时,使用 Serilog 将配置读取到全局日志记录器中:
using Microsoft.Extensions.Configuration;
using Serilog;
public class Program
{
public static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(configuration)
.CreateLogger();
try
{
Log.Information("Starting application.");
// 执行应用程序代码
}
catch (Exception ex)
{
Log.Fatal(ex, "Application terminated unexpectedly!");
}
finally
{
Log.CloseAndFlush();
}
}
}
以上代码通过读取 appsettings.json 配置文件中的配置,将 Serilog 日志写入到 MSSQL 数据库。
请注意,此处的示例仅适用于 MSSQL 数据库。如果您要使用其他类型的数据库,请相应地更改配置选项。
数据库日志表通常包含一些标准字段,这些字段可以帮助您了解系统和应用程序发生的事件。以下是一些常见的数据库日志字段列表:
Id: 日志记录的唯一标识符或主键。
LogLevel: 消息的记录级别,例如 Debug、Information、Warning 等等。
Message: 记录的消息文本。
Exception: 如果记录了异常或错误,则包含引发异常的详细信息。
Timestamp:记录消息的时间戳。
MachineName: 记录消息的计算机名称或 IP 地址。
Logger: 记录消息的日志记录器名称。
CorrelationId: 追踪应用程序中相关操作的唯一标识。
UserName: 执行操作的用户名称。
ClientIp: 来源客户端的 IP 地址。
RequestUri: 请求的地址。
Method: HTTP 请求方法类型。
StatusCode: HTTP 请求返回码。
ResponseTimeMs: 请求响应时间(以毫秒为单位)。
这些字段并不是固定的、一成不变的,它们可能会根据你的具体使用情况和数据库需求而不同。 当您将 Serilog 输出到数据库时,您可以通过配置 Serilog.Sinks.MSSqlServer 包来自定义数据库表格列及其名称。