我正在使用RollingFileAppender将一些信息记录到具有每个日志部分的头部的转换模式(在web.config中)的文件中:
<conversionPattern value="%date - %property{userId} - %property{method}%newline--------------------------------%newline%message%newline%newline"/>
我想在这个标题下记录细节作为项目符号。我正在尝试使用另一个RollingFileAppender,它使用简单的转换模式记录到同一个文件,只需一个破折号,如下所示:
<conversionPattern value="- %message%newline"/>
但是,这些消息并不会导入到日志文件中。我使用Log.Info()作为头和Log.Debug()的子弹点,并对其各自的日志级别过滤每个appender。我正在努力做什么?还是有更好的方法来获取标头和详细信息到log4net的日志文件?
解决方法
是的,您可以有两个log4net appender追加(写)到同一个日志文件。
您需要在每个Appender中放置以下行:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
这将使log4net使用最小的锁定模型,允许多个进程写入同一个文件。
以下是使用两个追加器写入同一个日志文件的示例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
只需在此页面上搜索“同一文件”即可。
希望这可以帮助。