Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Class log4net配置文件更改不会反映到类库中的记录器中_Class_Configuration_Log4net - Fatal编程技术网

Class log4net配置文件更改不会反映到类库中的记录器中

Class log4net配置文件更改不会反映到类库中的记录器中,class,configuration,log4net,Class,Configuration,Log4net,我在使用log4net日志库时遇到问题 有3个项目 .Net Core v2.2 WebAPI(添加了log4net库,添加了log4net.config)-使用以下类库 .Net标准v2.0类库(添加了log4net库) .Net标准v2.0类库(添加了log4net库) 在项目1中,在Startup.cs中,使用以下代码启动log4net: loggerFactory.AddLog4Net(“log4net.config”,true); log4net.config文件如下所示: 在类

我在使用log4net日志库时遇到问题

有3个项目

  • .Net Core v2.2 WebAPI(添加了log4net库,添加了log4net.config)-使用以下类库
  • .Net标准v2.0类库(添加了log4net库)
  • .Net标准v2.0类库(添加了log4net库)
  • 在项目1中,在Startup.cs中,使用以下代码启动log4net:

    loggerFactory.AddLog4Net(“log4net.config”,true);
    
    log4net.config文件如下所示:

    
    
    在类库中,使用以下代码设置ILog实例:

    var log4net.ILog log=log4net.LogManager.GetLogger(“DebugOnlyLogger”);
    
    通过此配置:

    • appender日志通常在登录WebAPI项目期间工作
    • appender Debugger仅在类库中工作
    我的问题是,我想通过如下更改log4net.config文件来关闭DebugOnlyLogger的日志记录:

    
    
    但是类库中的记录器无法识别该更改,即使log4net是以参数watch=true启动的(请参阅AddLog4Net(“log4net.config”,true))。 类库中的记录器保持在调试级别的日志记录

    我错过了什么?我尝试了几种类似的方法,但都没有解决问题:

    • 使用log4net.Config.XmlConfigurator.Configure()方法在类库中重新加载和重新配置
    • 在登录类库之前触发RaiseConfigurationChanged事件
    • 在DebugOnly appender中设置Threshold=OFF

    我不想通过在每个类库中引入一个单独的自定义配置文件来实现一个快速而肮脏的解决方案。正确的解决方案应该只使用log4net.config文件,但是如何解决呢?

    仔细检查后,通过在Startup.cs中进行以下更改来解决问题

    loggerFactory.AddLog4Net(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "log4net.config"), true);