Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Serilog:RollingFile在具有';appsettings.json';_C#_Asp.net Core_Logging_Serilog - Fatal编程技术网

C# Serilog:RollingFile在具有';appsettings.json';

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文件中的设置

我正在使用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文件中的设置包括:

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)