c#: Log4Net 控制台应用程序无法根据日志级别创建控制台颜色并崩溃

c#: Log4Net console application failed to create console color according log level and crash

所以这是我的 Log4Net app.config:

<log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%date] [%level] [%logger/%method] → %message%newline%exception"/>
      </layout>
      <mapping>
        <level value="DEBUG" />
        <foreColor value="Orange, HighIntensity" />
      </mapping>
      <mapping>
        <level value="INFO" />
        <foreColor value="Green, HighIntensity" />
      </mapping>
      <mapping>
        <level value="WARN" />
        <foreColor value="Yellow, HighIntensity" />
      </mapping>
      <mapping>
        <level value="ERROR" />
        <foreColor value="Red, HighIntensity" />
      </mapping>
    </appender>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <file value="c:\logs\log.txt"/>
      <rollingStyle value="Date" />
      <appendToFile value="true" />
      <rollingStyle value="Size"/>
      <maximumFileSize value="10MB"/>
      <maxSizeRollBackups value="5"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <datePattern value="yyyyMMdd" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="[%date] [%level] - %message%newline%exception"/>
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingFile" />
    </root>
  </log4net>

所以一切正常,除了我无法创建任何我想要的 Console color

例如:

  <mapping>
    <level value="DEBUG" />
    <foreColor value="Orange, HighIntensity" />
  </mapping>

当我尝试定义此 Orange(甚至 Gray)颜色时,我收到此错误:

log4net:ERROR Could not create Appender [ConsoleAppender] of type [log4net.Appender.ColoredConsoleAppender]. Reported error follows. System.ArgumentException: Requested value 'Orange, HighIntensity' was not found. at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument) at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult) at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase) at log4net.Util.OptionConverter.ConvertStringTo(Type target, String txt) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(Type type, String value) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element, Object target) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element, Type defaultTargetType, Type typeConstraint) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element, Object target) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement) log4net:ERROR Appender named [ConsoleAppender] not found.

但是如果我想定义 Blue 这没有任何 errors.

工作正常

根据文档,橙色不是可以使用的有效颜色:https://logging.apache.org/log4net/log4net-1.2.12/release/sdk/log4net.Appender.ColoredConsoleAppender.html

摘自link: Level 是标准的 log4net 日志级别,ForeColor 和 BackColor 可以是以下值的任意组合:

蓝色- 绿色的 - 红色的 - 白色的 - 黄色的 - 紫色的 - 青色 - 高强度