无法将 Serilog 配置转换为 appsettings.json
Trouble converting Serilog Configuration to appsettings.json
我在 c# 上有这段代码,它可以很好地完成工作。
来自 CSPConsumersLayer 的每个日志都记录在一个特定的文件 (ConsumerLog.txt) 上,同时,每个其他日志都记录在另一个文件 (Log.txt) 上。
这是我想要在 appsettings.json
中实现的 C# 配置
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\ConsumerLog.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {ThreadId} {MachineName} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.WriteTo.Logger(lg => lg.Filter.ByExcluding(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\Log.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.CreateLogger();
当我尝试在 Json 上转换它时,好像它不起作用
--这是我想出来的JSON,但是不能正常工作
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
{ "Name": "Console" },
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "../Logs/ConsumerLog.log",
"outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
"rollOnFileSizeLimit": "true",
"fileSizeLimitBytes": 104857600
}
}
]
}
}
},
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByExcluding",
"Args": {
"expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "../Logs/Log.log",
"outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
"rollOnFileSizeLimit": "true",
"fileSizeLimitBytes": 104857600
}
}
]
}
}
}
],
"Enrich": [
"FromLogContext",
"WithMachineName"
]
}
答案就这么简单。如果你想对appsettings.json进行过滤,你应该包含一个名为的数据包'serilog-extensions-logging'.
我在 c# 上有这段代码,它可以很好地完成工作。 来自 CSPConsumersLayer 的每个日志都记录在一个特定的文件 (ConsumerLog.txt) 上,同时,每个其他日志都记录在另一个文件 (Log.txt) 上。 这是我想要在 appsettings.json
中实现的 C# 配置Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\ConsumerLog.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {ThreadId} {MachineName} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.WriteTo.Logger(lg => lg.Filter.ByExcluding(Matching.FromSource(nameof(CSPConsumersLayer))).WriteTo.File(@"..\Logs\Log.txt", LogEventLevel.Information, "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}", rollOnFileSizeLimit: true, fileSizeLimitBytes: 104857600))
.CreateLogger();
当我尝试在 Json 上转换它时,好像它不起作用
--这是我想出来的JSON,但是不能正常工作
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"WriteTo": [
{ "Name": "Console" },
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "../Logs/ConsumerLog.log",
"outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
"rollOnFileSizeLimit": "true",
"fileSizeLimitBytes": 104857600
}
}
]
}
}
},
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByExcluding",
"Args": {
"expression": "StartsWith(SourceContext, 'CSPConsumersLayer')"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "../Logs/Log.log",
"outputTemplate": "{Timestamp:G} [{Level}] {User} {IP} {ThreadId} {MachineName} {SourceContext} {RequestId} {Message} {Exception}{NewLine}",
"rollOnFileSizeLimit": "true",
"fileSizeLimitBytes": 104857600
}
}
]
}
}
}
],
"Enrich": [
"FromLogContext",
"WithMachineName"
]
}
答案就这么简单。如果你想对appsettings.json进行过滤,你应该包含一个名为的数据包'serilog-extensions-logging'.