Log4Net,不能同时使用多个RollingFileAppender

本文关键字:RollingFileAppender 不能 Log4Net | 更新日期: 2023-09-27 18:29:13

我有一个奇怪的问题。我试图创建多个滚动文件附加程序,引用同一个文件中的每个文件,但一次只使用其中一个附加程序。

问题是,如果我这样声明我的附加程序:

<appender name="APP1" type="log4net.Appender.RollingFileAppender">
  <file value="C:'Log.txt" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - message%newline" />
  </layout>
 </appender>
<logger name="APP1" additivity="false">
  <level value="DEBUG" />
  <appender-ref ref="APP1" />
</logger>
<appender name="APP2" type="log4net.Appender.RollingFileAppender">
  <file value="C:'Log.txt" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - message%newline" />
  </layout>
 </appender>
<logger name="APP2" additivity="false">
  <level value="DEBUG" />
  <appender-ref ref="APP2" />
</logger>

然后我的"APP1"记录器写入文件没有问题,但不是"APP2"记录器,就像它只获得第一个记录器一样。显然,如果我让两个记录器切换位置,一切都适用于"APP2",但不适用于"APP1"

此外,当追加失败时,我可以在调试窗口中看到:

log4net: Opening file for writing [C:'Log.txt] append [True]
log4net: Opening file for writing [C:'Log.txt] append [True]

我想,这意味着它正在附加,但奇怪的是,它没有这样做。在工作场景中,我看不到这些日志。非常感谢任何提示!!感谢您抽出时间

Log4Net,不能同时使用多个RollingFileAppender

也许你可以这样写:

<root>
    <level value="DEBUG" />
    <appender-ref ref="APP1" />
    <appender-ref ref="APP2" />
</root>

这是一个使用多个追加器的配置文件。你可以在http://logging.apache.org/log4net/release/manual/configuration.html

<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
        <!-- Pattern to output the caller's file name and line number -->
        <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
    </layout>
</appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="example.log" />
    <appendToFile value="true" />
    <maximumFileSize value="100KB" />
    <maxSizeRollBackups value="2" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level %thread %logger - %message%newline" />
    </layout>
</appender>
<root>
    <level value="DEBUG" />
    <appender-ref ref="Console" />
    <appender-ref ref="RollingFile" />
</root>

可以使用多个附加程序,但不能使用多个FileAppender(或RollingFileAppenders)登录同一个文件。因此,如果您将APP2附加程序更改为登录到另一个文件中,它就会起作用。

<appender name="APP2" type="log4net.Appender.RollingFileAppender">
  <file value="C:'Log2.txt" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - message%newline" />
  </layout>
</appender>

问题可能是log4net无法通过不同的FileAppender同时访问同一个文件。

相关文章:
  • 没有找到相关文章