C# Serilog:RollingFile在具有';appsettings.json';
我正在使用asp.net核心(网站)和Serilog进行日志记录 已安装Nuget软件包C# Serilog:RollingFile在具有';appsettings.json';,c#,asp.net-core,logging,serilog,C#,Asp.net Core,Logging,Serilog,我正在使用asp.net核心(网站)和Serilog进行日志记录 已安装Nuget软件包 Serilog Serilog.AspNetCore Serilog.Extensions.Logging Serilog.Extensions.Logging.File Serilog.Settings.Configuration Serilog.Sinks.File Serilog.Sinks.RollingFile Microsoft.Extensions.Logging Main.cs文件中的设置
Serilog
Serilog.AspNetCore
Serilog.Extensions.Logging
Serilog.Extensions.Logging.File
Serilog.Settings.Configuration
Serilog.Sinks.File
Serilog.Sinks.RollingFile
Microsoft.Extensions.Logging
Main.cs文件中的设置包括:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((WebHostBuilderContext, configurationBuilder) =>
{
configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
configurationBuilder.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json", optional: true);
configurationBuilder.AddEnvironmentVariables();
})
.ConfigureLogging((hostingContext, loggingBuilder) =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddSerilog();
})
.UseStartup<Startup>();
}
当我使用包含以下内容的appsettings.json文件时
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"MyDatabaseLocal": "Server=_;Database=_;MultipleActiveResultSets=true;Connection Timeout=333;Integrated Security=SSPI",
"OtherDatabaseLocal": "Server=_;Database=_;MultipleActiveResultSets=true;Connection Timeout=333;Integrated Security=SSPI"
},
"Serilog": {
"MinimumLevel": "Debug",
"Override": {
"Microsoft": "Warning"
},
"Using": [
"Serilog.Sinks.Console",
"Serilog.Sinks.File"
],
"WriteTo": [
{
"Name": "RollingFile",
"Args": {
"path": "Logs/MyProject.txt"
}
}
]
}
}
并将startup.cs文件更改为
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration.GetSection("Serilog"))
.CreateLogger();
loggerFactory.AddSerilog();
--
--
}
在此之后,不会创建任何文件。有什么问题吗 下面的通话没有达到您预期的效果:
.ReadFrom.Configuration(Configuration.GetSection("Serilog"))
使用此扩展方法时,Serilog希望在您通过的配置中有一个名为Serilog
的部分。在您的示例中,您正在传递Serilog
部分本身,但它正在该部分中查找另一个Serilog
部分
将调用更新为仅通过配置
,如下所示:
.ReadFrom.Configuration(Configuration)
Serilog将找到您的Serilog
部分并使用该部分的设置
.ReadFrom.Configuration(Configuration)