从 appSettings.json 配置 Serilog 时出现问题
Problems configuring Serilog from appSettings.json
我有一个关于 Serilog 配置的问题 appSettings.json。
我的项目是一个基于.Net Core 3.0 的控制台应用程序。
我尝试设置 Serilog 以便将日志信息写入控制台和日志文件。
当我在我的代码中配置所有内容时 - 一切都按预期工作。
但是当我尝试从 appsettings.json 文件导入 Serilog 配置设置时,我遇到了问题,我的 ConsoleSink 工作正常,但我的 FileSink 不行。
这是我在 appsettings.json 中写入的内容:
{
"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": { "pathFormat": "Xlog.txt" }
},
{ "Name": "Console" }
]
}
}
这是相关代码:
IConfiguration configSerilog = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
log = new LoggerConfiguration()
.ReadFrom.Configuration(configSerilog)
.CreateLogger();
log.Information("Initializing Serilog....");
我的 'test-log-message' 获取显示在我的控制台中 window,但我没有获取日志文件。
正如我所提到的,当我在我的代码中配置 Serilog 而不是通过应用程序设置时,它就起作用了。
所以,我确实有适当的访问权限来创建文件。
有什么想法或提示吗?
确保 appsettings.json
、属性“复制到输出目录”的文件属性是“始终复制”或“如果较新则复制”。
并如下更新您的配置(Args
中的pathFormat
应该是 path
)
{
"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": { "path": "Xlog.txt" }
},
{ "Name": "Console" }
]
}
}
我有一个关于 Serilog 配置的问题 appSettings.json。 我的项目是一个基于.Net Core 3.0 的控制台应用程序。 我尝试设置 Serilog 以便将日志信息写入控制台和日志文件。
当我在我的代码中配置所有内容时 - 一切都按预期工作。
但是当我尝试从 appsettings.json 文件导入 Serilog 配置设置时,我遇到了问题,我的 ConsoleSink 工作正常,但我的 FileSink 不行。
这是我在 appsettings.json 中写入的内容:
{
"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": { "pathFormat": "Xlog.txt" }
},
{ "Name": "Console" }
]
}
}
这是相关代码:
IConfiguration configSerilog = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true, true)
.Build();
log = new LoggerConfiguration()
.ReadFrom.Configuration(configSerilog)
.CreateLogger();
log.Information("Initializing Serilog....");
我的 'test-log-message' 获取显示在我的控制台中 window,但我没有获取日志文件。
正如我所提到的,当我在我的代码中配置 Serilog 而不是通过应用程序设置时,它就起作用了。 所以,我确实有适当的访问权限来创建文件。
有什么想法或提示吗?
确保 appsettings.json
、属性“复制到输出目录”的文件属性是“始终复制”或“如果较新则复制”。
并如下更新您的配置(Args
中的pathFormat
应该是 path
)
{
"Serilog": {
"Using": [ "Serilog.Sinks.File", "Serilog.Sinks.Console" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": { "path": "Xlog.txt" }
},
{ "Name": "Console" }
]
}
}