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# 将Log4Net.AspNetCore与ILoggingBuilder结合使用时出现的问题_C#_Asp.net Core_Log4net_Log4net Configuration_Asp.net Core 2.2 - Fatal编程技术网

C# 将Log4Net.AspNetCore与ILoggingBuilder结合使用时出现的问题

C# 将Log4Net.AspNetCore与ILoggingBuilder结合使用时出现的问题,c#,asp.net-core,log4net,log4net-configuration,asp.net-core-2.2,C#,Asp.net Core,Log4net,Log4net Configuration,Asp.net Core 2.2,ASP.NET Core 2.2内置提供程序似乎不包含文件提供程序。因此,我现在选择使用log4net。但是,当我尝试使用ILOGingBuilder类创建带有Microsoft.Extensions.logging的日志服务时,Log4Net似乎无法找到其配置文件。以下是我的代码摘要以及我迄今为止所做的工作: Startup.cs public class Startup { private readonly ILogger _logger; public Startup(I

ASP.NET Core 2.2内置提供程序似乎不包含文件提供程序。因此,我现在选择使用log4net。但是,当我尝试使用ILOGingBuilder类创建带有Microsoft.Extensions.logging的日志服务时,Log4Net似乎无法找到其配置文件。以下是我的代码摘要以及我迄今为止所做的工作:

Startup.cs

public class Startup
{
    private readonly ILogger _logger;

    public Startup(IConfiguration configuration, ILogger<Startup> logger)
    {
        Configuration = configuration;
        _logger = logger;

        _logger.LogInformation("Starting Container . . .");
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        _logger.LogInformation("Configuring DI Services . . .");

        services.AddLogging(logging =>
        {
            logging.AddConsole();
            logging.AddLog4Net();
        });

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        _logger.LogInformation("Configuring Application . . .");

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseCookiePolicy();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Login}/{action=Index}/");
        });

        _logger.LogInformation("Web Application Startup Completed . . .");
    }
}
我知道有一个选项包,允许我在appconfig.json中进行覆盖和附加配置(并允许我使用主机容器的环境切换功能),但这并不是必需的,仍然取决于要找到的log4net.config


Github页面可能已经过时,或者我遗漏了什么吗?

它还说,“将AddLog4Net()调用添加到启动类的Configure方法中。”我在代码中没有看到这一点。在他们的示例中,他们将iLogger工厂传递到Configure中,并在Configure中包含以下行:var loggingOptions=this.Configuration.GetSection(“Log4NetCore”).Get();loggerFactory.AddLog4Net(loggingOptions);我已经在配置服务中这样做了。在Configure方法中执行此操作将导致代码中断,但出现以下异常:无法为类型上方法“Configure”的参数“loggingBuilder”解析类型为“Microsoft.Extensions.Logging.ILoggingBuilder”的服务。这里已经讨论过了:是的,很好的调用。在他的asp.NET2.2示例中,他在项目文件中设置了CopyToOutputDirectory。也许可以试试。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <log4net>
    <appender name="DebugAppender" type="log4net.Appender.DebugAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>
    <appender name="RollingFile" type="log4net.Appender.FileAppender">
      <file value="WebSiteDI.log" />
      <maximumFileSize value="500KB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%-5p %d{hh:mm:ss} %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="ALL" />
      <appender-ref ref="DebugAppender" />
      <appender-ref ref="RollingFile" />
    </root>
  </log4net>
</configuration>
var logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));