C# Log4net错误-模式字符串不工作

C# Log4net错误-模式字符串不工作,c#,log4net,C#,Log4net,我正在项目中使用log4net创建日志组件。我已经创建了一个xml文件来配置log4net设置,包括追加器和记录器定义。我正在使用PatternString从appsetting.config文件中获取属性值。但是,当我构建并运行项目时,它会抛出以下错误: log4net:在记录器[Test]上未定义级别[%property{level}]时出错。 有人知道是什么引起的吗 XML: <?xml version="1.0" encoding="UTF-8" ?> <log4net

我正在项目中使用
log4net
创建日志组件。我已经创建了一个xml文件来配置
log4net
设置,包括追加器和记录器定义。我正在使用
PatternString
appsetting.config
文件中获取属性值。但是,当我构建并运行项目时,它会抛出以下错误:

log4net:在记录器[Test]上未定义级别[%property{level}]时出错。

有人知道是什么引起的吗

XML:

<?xml version="1.0" encoding="UTF-8" ?>
<log4net>
  <logger name="Test">
    <level type="log4net.Util.PatternString" value="%property{Level}" />
    <appender-ref ref="JsonFileAppender" />
  </logger>
</log4net>

appsetting.config

<appSettings>
  <add key="Level" value="ALL"/>
</appSettings>


如果有用,
log4net
版本为:版本:2.0.8此错误的原因是无法通过
模式字符串配置记录器的级别
元素需要一个众所周知的值,例如
ALL
DEBUG
INFO
WARN
ERROR

例如:

好问题

我从中学到了很多

在开始记录之前,请不要忘记调用此方法

log4net.Config.XmlConfigurator.Configure();
app.config是

  • 如果需要应用模式,请使用
    元素
  • 如果您想使用“appSettings”中的某些值, 像这样使用,
    %appSetting{Environment}
  • 
    
    
  • logger = LogManager.GetLogger("Test");
    Level level = // Parse from ConfigurationManager.AppSettings["Level"]
    ((Logger)logger.Logger).Level = level;
    
    log4net.Config.XmlConfigurator.Configure();
    
        <?xml version="1.0" encoding="utf-8"?>
        <configuration>
    
          <configSections>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
          </configSections>
    
          <log4net>
              <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
                  <layout type="log4net.Layout.PatternLayout">
                      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
                  </layout>
              </appender>
              <root>
                  <level value="%appSetting{Environment}" />
                  <appender-ref ref="ConsoleAppender" />
              </root>
          </log4net>     
    
          <appSettings>
            <add key="Environment" value="INFO" />
            <!-- this is optional flag.-->
            <add key="log4net.Internal.Debug" value="True" />    
          </appSettings>  
        </configuration>