我有一个奇怪的问题。我正在尝试创建多个滚动文件appender,引用每个人相同的文件,但一次只使用一个theese appender。
问题是,如果我这样宣布我的追加者:
<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]
我猜,这意味着它正在追加,但奇怪的是它没有这样做。在工作场景中,我看不到那些日志。 任何提示都非常感谢!! 谢谢你的时间
答案 0 :(得分:1)
也许你可以这样写:
<root>
<level value="DEBUG" />
<appender-ref ref="APP1" />
<appender-ref ref="APP2" />
</root>
这是一个使用多个appender的配置文件。 您可以在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>
可能使用多个appender,但您不能使用多个FileAppender(或RollingFileAppenders)来登录同一个文件。 因此,如果您更改APP2 appender以登录其他文件,则可以正常工作。
<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同时访问同一个文件。