【问题标题】:log4net in ASP.NET Core does not reload on changesASP.NET Core 中的 log4net 不会在更改时重新加载
【发布时间】:2021-04-02 12:13:03
【问题描述】:

根据Apache log4net™ Manual - Configuration - appSettings,我将这两行添加到我的 web.config 以观察我的 log4net.config 文件的更改(例如在运行时更改日志级别...)

<appSettings>
  <add key="log4net.Config" value="log4net.config"/>
  <add key="log4net.Config.Watch" value="True"/>
</appSettings>

不幸的是,它不起作用,因此日志级别的更改将在不重新启动应用程序的情况下应用。我正在使用 ASP.Net Core 5.0,该应用使用 appSettings.json 而不是 web.config。

【问题讨论】:

  • “我正在开发 ASP.Net Core 5.0” - 如何添加 log4net?
  • 通过 nuget 安装 Microsoft.Extensions.Logging.Log4Net.AspNetCore 将 CreateHostBuilder 中的 IHostBuilder 改编为 .ConfigureLogging(builder =&gt;{ builder.SetMinimumLevel(LogLevel.Debug); builder.AddLog4Net("log4net.config"); });

标签: c# asp.net-core .net-core log4net log4net-configuration


【解决方案1】:

使用 Microsoft.Extensions.Logging.Log4Net.AspNetCore,就这么简单:

services.AddLogging(logging =>
{
    logging.AddLog4Net(new Log4NetProviderOptions { Watch = true });
});

或者在你的情况下:

services.AddLogging(logging =>
{
    logging.AddLog4Net("log4net.config", true);
});

【讨论】:

  • 我从 Program.cs 中删除了 ConfigureLogging 并将您提到的 servives.AddLogging 添加到 Startup.cs 不幸的是没有成功。如果我更改 log4net.config 中的值,日志文件中的日志级别不会更改
  • 例如,如果我更改日志配置中的文件名,则重新加载对我有用。确保您编辑 bin\Debug\net5.0 目录中的配置,并且您所做的更改不会与其他更改(例如日志记录阈值)冲突。
  • 你有什么想法,为什么我看不到 DEBUG 日志?即使级别设置为 DEBUG 或 ALL?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2020-04-02
  • 2014-12-06
  • 2019-02-11
  • 2023-03-26
  • 2022-01-25
相关资源
最近更新 更多