如何将不同的日志级别记录到log4net中的不同日志附加程序

2024-06-26

我有一个 WinForm,它显示日志信息,但我希望它仅显示 INFO 级别,但我希望日志文件中的日志也包含 DEBUG 级别。

下面是我的配置:

<?xml version="1.0" encoding="utf-8" ?>
<!-- This section contains the log4net configuration settings -->
<log4net>
  <!-- Define some output appenders -->

  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="${ALLUSERSPROFILE}\\Application Data\\logs\\Gateway" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <param name="StaticLogFileName" value="false" />
    <datePattern value=".yyyyMMdd.lo\g" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date | [%thread] | %-5level | %logger | %message %newline" />
    </layout>
  </appender>

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>

  <appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
    <mapping>
      <level value="DEBUG" />
      <backColor value="Blue" />
    </mapping>
    <mapping>
      <level value="INFO" />
      <backColor value="Green" />
    </mapping>
    <mapping>
      <level value="WARN" />
      <backColor value="Yellow" />
    </mapping>
    <mapping>
      <level value="ERROR" />
      <backColor value="Red" />
    </mapping>
    <mapping>
      <level value="FATAL" />
      <backColor value="Red, HighIntensity" />
    </mapping>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
    </layout>
  </appender>

  <appender name="RichTextBoxAppender" type="Gateway.RichTextBoxAppender,Gateway" >
    <layout type="log4net.Layout.PatternLayout">
      <param name="Header" value="[Header]\r\n"/>
      <param name="Footer" value="[Footer]\r\n"/>
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
    </layout>
    <mapping>
      <level value="DEBUG" />
      <textColorName value="DarkGreen" />
    </mapping>
    <mapping>
      <level value="INFO" />
      <textColorName value="ControlText" />
    </mapping>
    <mapping>
      <level value="WARN" />
      <textColorName value="Blue" />
    </mapping>
    <mapping>
      <level value="ERROR" />
      <textColorName value="Red" />
      <bold value="true" />
      <pointSize value="10" />
    </mapping>
    <mapping>
      <level value="FATAL" />
      <textColorName value="Black" />
      <backColorName value="Red" />
      <bold value="true" />
      <pointSize value="12" />
      <fontFamilyName value="Lucida Console" />
    </mapping>
  </appender>


  <!-- Setup the root category, add the appenders and set the default level -->
  <root>
    <level value="WARN" />
    <appender-ref ref="LogFileAppender" />
    <appender-ref ref="ColoredConsoleAppender" />
    <appender-ref ref="RichTextBoxAppender" />
  </root>

  <logger name ="Gateway" additivity="false">
    <level value="INFO" />
    <appender-ref ref="LogFileAppender" />
    <appender-ref ref="ColoredConsoleAppender" />
    <appender-ref ref="RichTextBoxAppender" />
  </logger>



</log4net>

现在 LogFileAppender 和 RichTextBoxAppender 都设置为 INFO。我尝试取出网关记录器中的 LogFileAppender 并移动到另一个记录器,并将这个新记录器设置为“DEBUG”级别,但它仍在执行其中之一。如何配置它以使 LogFileAppender 具有 DEBUG 级别而 RichTextBoxAppender 具有 INFO 级别?


您应该能够向两个附加程序添加过滤器。

<filter type="log4net.Filter.LevelRangeFilter">
         <levelMin value="INFO" />
         <levelMax value="FATAL" />
</filter>

这样,一个附加程序将仅记录到某一级别,而另一个附加程序将记录到不同的级别,即使它们是由同一记录器定义的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将不同的日志级别记录到log4net中的不同日志附加程序 的相关文章

  • 为什么记录器建议每个类使用一个记录器?

    根据 NLog 的文档 大多数应用程序将为每个类使用一个记录器 其中记录器的名称与类的名称相同 这与 log4net 的操作方式相同 为什么这是一个好的做法 使用 log4net 每个类使用一个记录器可以轻松捕获日志消息的来源 即写入日志的
  • 依赖注入和命名记录器

    我有兴趣了解更多有关人们如何使用依赖注入平台注入日志记录的信息 尽管下面的链接和我的示例引用了 log4net 和 Unity 但我不一定会使用其中任何一个 对于依赖注入 IOC 我可能会使用 MEF 因为这是项目 大型 其余部分所采用的标
  • 如何使用 Log4Net 在日志文件中获取当前用户名而不是 AppPool 身份

    我们在 ASP NET MVC3 应用程序中使用 Log4Net 一切正常 但我们希望在日志文件中看到当前用户名而不是应用程序池的标识 这是我们正在使用的附加程序配置
  • Log4Net 不工作

    我正在 Windows XP 中以管理员用户身份使用 C 开发 NET Framework 3 5 并使用 log4net 进行 NET Framework 2 0 二进制引用 我曾尝试过log4net 缺少什么 未创建日志文件 https
  • log4net可以输出Json吗?

    我见过 log4net 的几个扩展 它们声称为日志文件创建 json 但格式永远不是有效的 json 这意味着集合不在数组中 也不是逗号分隔的 我使用它是错误的还是没有办法将 log4net 与 json 一起使用
  • 如何使用 Windows 中的 log4net xml 配置器使用文件夹位置指定日志文件路径?

    在我的 app config 中我放入
  • 为什么 nhibernate 需要 Log4Net?

    我将使用 asp net mvc3 和 nhibernate 3 2 构建我的应用程序 我决定使用 Elmah 记录所有错误消息 我记得 nhibernate 支持 log4net 并用它来记录所有查询 如果我不关心将查询输出到日志文件 我
  • 你的 log4net 配置中有什么?黑客、优化、观察?

    这是我的 log4net 配置文件
  • C# 项目,编译器抱怨缺少对 log4net 的引用

    我正在使用 Visual Studio 2017 构建一个大型 C 项目 解决方案中有 200 多个项目 在编译其中一个项目时 我遇到了很多错误 如下所示 error CS0012 The type BufferingAppenderSke
  • 使用 Log4Net 格式化日期时间

    我想在使用 Log4Net 编写的日志文件中显示时间戳 HH mm ss 我希望该值采用中部时间 但我不希望出现偏移量 理想情况下 我希望它能够阅读
  • MSTest - 如何为 UnitTest 项目初始化 log4net?

    我有一个 Visual Studio 单元测试项目 用于测试 ASP NET MVC 项目 添加程序集级别log4net Config XmlConfiguratorAssemblyInfo cs 的属性不起作用 SO 上的其他人发现他们必
  • 控制台应用程序的 log4net 配置

    谁能建议如何为控制台应用程序配置 log4net 或者至少如何 在哪里捕捉Application Start事件 看来此时需要一些电话 提前致谢 尝试写作 assembly log4net Config XmlConfigurator Wa
  • Windows 10 Fall Creators Update (1709) 后,log4net 处理呼叫者位置信息变得非常慢

    我知道 log4net 的文档指出 记录调用者位置信息可能非常慢 除非软件的性能不受影响 否则不应使用 在 Windows 10 秋季创意者更新之前 情况都是如此 这是一个小示例项目 应用程序配置
  • log4net 控制台应用程序未登录发布

    我有一个使用 log4net 的控制台应用程序 通过温莎城堡 当我调试时 一切都很好地记录到控制台 但是当我发布并运行应用程序时 没有记录任何内容 我的 log4net 配置位于单独的文件 log4net config 中 我认为它没有找到
  • 如何在 Xamarin 中使用 Log4Net

    我有一个使用 Xamarin MonoTouch 的应用程序 我想在其中使用日志记录框架 搜索时我遇到了 Log4Net http logging apache org log4net http logging apache org log
  • 我在这个 log4net 实现中做错了什么?

    与许多其他人一样 我正在尝试将 Log4net 实现到我的 C net 应用程序中 但我无法让它为我工作 我已经做了很多搜索 包括在这个网站上 并尝试了许多不同的解决方案 但还没有任何对我有用的解决方案 所以简单的问题是 我做错了什么 As
  • log4net 配置[程序集:]

    我很好奇以下行如何在程序集中配置 log4net assembly log4net Config XmlConfigurator Watch true 我猜这会在运行时调用 main 之前的某个时间被调用 但是这种情况什么时候发生 有什么影
  • 如何在 C# 中重构 log4net 语句?

    好吧 读完丹本对此的回答后post https stackoverflow com questions 2230180 whats log4j actually doing when we turn on or off some log p
  • 记录时何时出现致命错误?

    在 log4j 和 log4net 等日志框架中 您可以记录各种级别的信息 大多数级别都有明显的意图 例如 调试 日志与 错误 日志是什么 然而 我一直害怕的一件事是将我的日志记录归类为 致命 哪种类型的错误如此严重以至于应被归类为致命错误
  • Log4Net“找不到架构信息”消息

    我决定使用log4net http logging apache org log4net index html作为新 Web 服务项目的记录器 一切工作正常 但对于我在我的应用程序中使用的每个 log4net 标签 我都会收到很多类似下面的

随机推荐