Serilog.Sinks.MsSqlServer 无法使用 ASP.NET Core 2.2 Web API
Serilog.Sinks.MsSqlServer not working with ASP.NET Core 2.2 Web API
我遵循了文档提供的 appsettings.json 格式并具有以下内容:
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.File" ],
"MinimumLevel": "Verbose",
"Enrich": [ "FromLogContext", "WithThreadId" ],
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Default",
"schemaName": "log",
"tableName": "LogTable",
"autoCreateSqlTable": true,
"restrictedToMinimumLevel": "Verbose",
"batchPostingLimit": 100,
"period": "0.00:00:30",
"columnOptionsSection": {
"disableTriggers": true,
"clusteredColumnstoreIndex": false,
"primaryKeyColumnName": "Id",
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "Properties" ],
"additionalColumns": [
{
"ColumnName": "Username",
"DataType": "nvarchar",
"DataLength": 250,
"AllowNull": false
}
],
"id": {
"nonClusteredIndex": true,
"DataType": "bigint"
},
"level": {
"columnName": "Level",
"storeAsEnum": false
},
"timeStamp": {
"columnName": "CreatedDate",
"convertToUtc": false
},
"message": { "columnName": "Message" },
"exception": { "columnName": "Exception" },
"messageTemplate": { "columnName": "Template" }
}
}
},
{
"Name": "File",
"Args": {
"path": "C:\Logs\WishesLog.txt",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "5242880",
"outputTemplate": "{Timestamp:o} [{Level:u3}] ({Username}-{ThreadId}): {Message}{NewLine}{Exception}"
}
}
]
}
我还有以下Program.cs
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog((context, config) => { config.ReadFrom.Configuration(context.Configuration); })
.UseStartup<Startup>();
}
文件接收器工作正常,但不幸的是我无法在 SQL 服务器中获取我的日志条目。 table 不会被创建。我也没有收到任何关于 DB Sink 的异常抛出。
发现问题出在 Serilog.Sinks.MsSqlServer 的版本上。使用最新的开发版本可以正确使用 json 配置。当前稳定版本 5.12 无法在 json 文件中进行完整配置,但在代码中配置记录器时可以正常工作。
希望对您有所帮助。
我遵循了文档提供的 appsettings.json 格式并具有以下内容:
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer", "Serilog.Sinks.File" ],
"MinimumLevel": "Verbose",
"Enrich": [ "FromLogContext", "WithThreadId" ],
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Default",
"schemaName": "log",
"tableName": "LogTable",
"autoCreateSqlTable": true,
"restrictedToMinimumLevel": "Verbose",
"batchPostingLimit": 100,
"period": "0.00:00:30",
"columnOptionsSection": {
"disableTriggers": true,
"clusteredColumnstoreIndex": false,
"primaryKeyColumnName": "Id",
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "Properties" ],
"additionalColumns": [
{
"ColumnName": "Username",
"DataType": "nvarchar",
"DataLength": 250,
"AllowNull": false
}
],
"id": {
"nonClusteredIndex": true,
"DataType": "bigint"
},
"level": {
"columnName": "Level",
"storeAsEnum": false
},
"timeStamp": {
"columnName": "CreatedDate",
"convertToUtc": false
},
"message": { "columnName": "Message" },
"exception": { "columnName": "Exception" },
"messageTemplate": { "columnName": "Template" }
}
}
},
{
"Name": "File",
"Args": {
"path": "C:\Logs\WishesLog.txt",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": "5242880",
"outputTemplate": "{Timestamp:o} [{Level:u3}] ({Username}-{ThreadId}): {Message}{NewLine}{Exception}"
}
}
]
}
我还有以下Program.cs
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseSerilog((context, config) => { config.ReadFrom.Configuration(context.Configuration); })
.UseStartup<Startup>();
}
文件接收器工作正常,但不幸的是我无法在 SQL 服务器中获取我的日志条目。 table 不会被创建。我也没有收到任何关于 DB Sink 的异常抛出。
发现问题出在 Serilog.Sinks.MsSqlServer 的版本上。使用最新的开发版本可以正确使用 json 配置。当前稳定版本 5.12 无法在 json 文件中进行完整配置,但在代码中配置记录器时可以正常工作。
希望对您有所帮助。