我正在使用RollingFileAppender将一些信息记录到带有conversionPattern(在web.config中)的文件中,该文件对于每个日志部分的标题如下所示:
<conversionPattern value="%date - %property{userId} - %property{method}%newline--------------------------------%newline%message%newline%newline"/>
我想将此标题下的详细信息记录为项目符号。我目前正在尝试使用另一个RollingFileAppender,它使用简单的convertPattern只需短划线就能记录到同一个文件,如下所示:
<conversionPattern value="- %message%newline"/>
但是这些消息没有进入日志文件。我正在使用Log.Info()作为标题,使用Log.Debug()作为项目符号点,并在各自的日志级别上过滤每个appender。我正在尝试做什么?或者有更好的方法将标题和详细信息从log4net获取到日志文件中吗?
答案 0 :(得分:32)
是的,你可以有两个log4net appender附加(写入)到同一个日志文件。
您需要在每个Appender中放置以下行:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
这将使log4net使用一个允许多个进程写入同一文件的最小锁定模型。
这是一个使用两个appender写入同一个日志文件的示例XML:
<log4net debug="false">
<appender name="RollingLogFileAppender1" type="log4net.Appender.RollingFileAppender">
<!-- this configures a log for the application messages -->
<file value="TestLog.log" />
<appendToFile value="true" />
<!-- next line uses a minimal locking model that allows multiple processes to write to the same file -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<!-- make the most recent log the highest numbered log -->
<countDirection value="1" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] %message%newline [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline" />
</layout>
<!-- The following two filters insure only log requests of
version '1' use this Appender -->
</appender>
<appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
<file value="TestLog.log" />
<appendToFile value="true" />
<!-- next line uses a minimal locking model that allows multiple processes to write to the same file -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<!-- make the most recent log the highest numbered log -->
<countDirection value="1" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{MM-dd-yyyy HH:mm:ss.ff} [%property{NDC}] [Thread: %thread] %c{1} Method:%method(%file{1}, Line:%line) %newline%message" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender1" />
<appender-ref ref="RollingLogFileAppender2" />
</root>
这可以在Apache文档中找到: Apache Log4Net Docs 只需在此页面上搜索“同一文件”。
希望这有帮助。
答案 1 :(得分:1)
你可以意识到log4net检查visual studio上的输出窗口是否有任何问题。库中的日志错误,对于检测配置错误非常有用。