当前位置: 首页 > 知识库问答 >
问题:

在两个附加器之间复杂地拆分 log4net 记录器

宗弘扬
2023-03-14

我希望我的应用程序中有 2 个日志文件。第一个记录器记录所有消息,但特定详细记录器的DEBUG输出除外,我想将其放入第二个日志文件中。

我仍然希望看到 INFO - 来自详细记录器的致命消息进入第一个日志文件。这可能吗?

我在这里看到了向appender-refs添加threshold元素的建议,但它似乎不起作用。

这是我目前掌握的情况:

<log4net>
  <appender name="fileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log4net" />
    <staticLogFileName value="false" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="'.'yyyyMMdd'.log'" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline" />
    </layout>
  </appender>
  <root>
    <level value="ALL" />
    <appender-ref ref="fileAppender" />
  </root>

  <!-- Separate appender for the Verbose logger debug output -->
  <appender name="verboseDebugAppender" type="log4net.Appender.RollingFileAppender">
    <file value="verboselog" />
    <staticLogFileName value="false" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="'.'yyyyMMdd'.log'" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="DEBUG" />
    </filter>
  </appender>
  <logger name="VerboseLogger" additivity="false">
    <level value="DEBUG" />

    <!-- Doesn't work -->
    <appender-ref ref="verboseDebugAppender">
      <threshold value="ALL" />
    </appender-ref>
    <appender-ref ref="fileAppender">
      <threshold value="ERROR" />
    </appender-ref>
  </logger>

</log4net>

共有1个答案

符俊材
2023-03-14

我看到一个问题:

拆下这些线

<!-- Doesn't work -->
<appender-ref ref="verboseDebugAppender">
  <threshold value="ALL" />
</appender-ref>
<appender-ref ref="fileAppender">
  <threshold value="ERROR" />
</appender-ref>

和改变

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

<root>
    <appender-ref ref="verboseDebugAppender">
      <threshold value="ALL" />
    </appender-ref>
    <appender-ref ref="fileAppender">
      <threshold value="ERROR" />
    </appender-ref>
</root>
 类似资料:
  • 我们有两个不同的ASP.NET应用程序启用了Log4net日志记录。它们都有相同的log4net1.2.10.0版本。

  • 但是这两条调试消息都记录到DebugAppender,而这两条信息消息都记录到InfoAppender。

  • 问题内容: 我想在我的应用程序(Spring Integration)中有两个日志文件,debug.log和main.log。我想在INFO级别运行main.log,在DEBUG级别运行debug.log。这可以通过追加程序上的过滤器完成。我想根据源将不同级别记录到附加程序。换一种说法 总结一下: 弹簧记录器 主要->错误 调试->调试 com.myapp记录器 主要->信息 调试->调试 因此,

  • 问题内容: 我有一个存储表,,,,如: 现在,如果我有IP地址,如何检索匹配记录? 编辑 根据戈登的答案(我遇到编译错误),这就是我的想法: 但这给了我一个错误: 有任何想法吗? 问题答案: 痛苦的。SQL Server具有糟糕的字符串操作功能。但是,它提供了。此方法将IP地址转换为较大的十进制值以进行比较: 我应该注意,IP地址通常以4字节无符号整数的形式存储在数据库中。这使比较容易得多。。。尽

  • 在使用log4j写入多个日志文件时,我遇到了重复日志消息的问题。 目前,我正在尝试在我的文件中记录名为foobar的特定记录器的级数据(及以上),然后在文件中记录所有记录器的所有级日志消息(及以上)。 因此,重复的日志消息被写入文件(每行记录两次),经过一些快速研究,我发现解决这一问题的建议是将添加到属性文件中。 这样做的问题是,尽管它会阻止重复行,但foobar记录器的消息从未写入文件。 我的l

  • 我正在尝试使用log4net将性能记录器分离到一个单独的日志中... 一旦我有了这个设置,我将错误记录到我的滚动日志文件中,然而我想捕获一些信息级别的数据到我的perf文件中... 我现在得到我的信息和警告在我的Perf日志,但我也得到我的错误在那里,它可能得到我的错误在我的主日志和我的信息级别在我的Perf日志?