简体   繁体   English

log4net 彩色控制台 Appender 问题

[英]log4net Colored Console Appender issue

I am using log4net library for showing logs on my console , I am able to show logs on console when am running the application in debug mode, but when I am running the console through a cmd, it is not showing the logs on console.我正在使用 log4net 库在我的控制台上显示日志,当我在调试模式下运行应用程序时,我能够在控制台上显示日志,但是当我通过 cmd 运行控制台时,它没有在控制台上显示日志。

XML Config : XML 配置:

<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="RollingFile" type="AutoLogger.FileAppender">
<file type="log4net.Util.PatternString" value="%property{LogFileName}" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<maximumFileSize value="200MB" />
<maxSizeRollBackups value="-1" />
<datePattern value="dd.MM.yyyy'.log'" />
<layout type="AutoLogger.TestcasePatternLayout, AutoLogger">
  <conversionPattern value="%level %date %testcase %message (%logger)%newline" />
  <param name="Header" value="[TEST START]&#xD;&#xA;" />
  <param name="Footer" value="[TEST END]&#xD;&#xA;" />
</layout>
</appender>

<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
  <level value="ERROR" />
  <foreColor value="White" />
  <backColor value="Red" />
</mapping>
<mapping>
  <level value="WARN" />
  <foreColor value="Yellow" />
</mapping>
<mapping>
  <level value="FATAL" />
  <foreColor value="White" />
  <backColor value="Red, HighIntensity" />
</mapping>
<layout type="AutoLogger.TestcasePatternLayout, AutoLogger">
  <conversionPattern value="%level %testcase %message %newline" />
</layout>
</appender>
<root>
<priority value="ALL" />
<appender-ref ref="ColoredConsoleAppender" />
<appender-ref ref="RollingFile" />
</root>
</log4net>

I suspect that I know this one...我怀疑我认识这个...

You posted some of the XML configuration for log4net, but there is one important bit of info you didn't mention.您发布了一些 log4net 的 XML 配置,但有一个重要的信息您没有提及。 If you are targeting dotnet core, I can help you out.如果您的目标是 dotnet 核心,我可以帮助您。 If you are still targeting the dontnet framework, well, all I can suggest is go back and double check all the online tutorials.如果您仍然以 dontnet 框架为目标,那么我只能建议您返回并仔细检查所有在线教程。 I have used the log4net colored console appender for years under the dontnet framework without fail, it works just fine.我多年来一直在 dontnet 框架下使用 log4net 彩色控制台附加程序,没有失败,它工作得很好。

On to the main event: If you are working with dotnet core applications, all the other log4net appenders work just fine without any changes from the posted docs and tutorials.关于主要事件:如果您正在使用 dotnet 核心应用程序,则所有其他 log4net 附加程序都可以正常工作,无需对已发布的文档和教程进行任何更改。 For some reason, though, the colored console appender needed to be changed.但是,出于某种原因,需要更改彩色控制台附加程序。 I dredged this up after quite a bit of digging in the Internet:我在互联网上进行了大量挖掘后挖掘了这个:

  <appender name="ColoredConsoleAppender" type="log4net.Appender.ManagedColoredConsoleAppender">
    <threshold value="ALL" />
    <mapping>
      <level value="FATAL" />
      <foreColor value="Magenta" />
    </mapping>
    <mapping>
      <level value="ERROR" />
      <foreColor value="Red" />
    </mapping>
    <mapping>
      <level value="WARN" />
      <foreColor value="Yellow" />
    </mapping>
    <mapping>
      <level value="INFO" />
      <foreColor value="Green" />
    </mapping>
    <mapping>
      <level value="DEBUG" />
      <foreColor value="Cyan" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>

  <root>
    <level value="ALL" />
    <appender-ref ref="ColoredConsoleAppender" />
  </root>

Just add this to your configuration file as you would any other appender, and it will work just fine.只需像添加任何其他 appender 一样将其添加到您的配置文件中,它就可以正常工作。

Bonus points!加分! Want to define your own set of colors?想要定义自己的颜色集? You cannot use the color names that are from the original colored console appender, it will break.您不能使用来自原始彩色控制台附加程序的颜色名称,它会损坏。 Here is a link to the enumerated values that are legal for the ManagedColoredConsoleAppender:以下是对 ManagedColoredConsoleAppender 合法的枚举值的链接:

https://docs.microsoft.com/en-us/dotnet/api/system.consolecolor?redirectedfrom=MSDN&view=net-5.0 https://docs.microsoft.com/en-us/dotnet/api/system.consolecolor?redirectedfrom=MSDN&view=net-5.0

May all your logged events be green!愿您所有记录的事件都是绿色的!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM