是否可以将MemoryMappedFile与Policy一起使用来将文件中断直到固定大小(例如250MB)?我的log4j2.xml就是这样,但我想将日志文件拆分为250MB,并且需要使用MemoryMappedFile来提高IO性能。
<Configuration monitorInterval="30">
<Appenders>
<MemoryMappedFile name="MemoryMap" fileName="output/jscsi-out.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c{2} - %m%n(%L)" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="250 MB" />
</Policies>
</MemoryMappedFile>
</Appenders>
<Loggers>
<Logger name="br.com" level="debug" additivity="false">
<AppenderRef ref="MemoryMap" />
</Logger>
<Logger name="org.jscsi.target.TargetServer" level="debug"
additivity="false">
<AppenderRef ref="MemoryMap" />
</Logger>
<Logger name="org.jscsi.target.storage" level="info"
additivity="false">
<AppenderRef ref="MemoryMap" />
</Logger>
<Logger name="org.jscsi.service" level="debug" additivity="false">
<AppenderRef ref="MemoryMap" />
</Logger>
<Root level="error" includeLocation="true">
<AppenderRef ref="MemoryMap" />
</Root>
</Loggers>
</Configuration>
最佳答案
(背景:我是MemoryMappedFile附加程序以及异步记录器的作者。)
从某种意义上说,MemoryMappedFile追加器仍在进行中(从Log4j 2.5开始)。如您所述,没有滚动变体。另外,我还无法进行任何重要的性能测试。我made a start前一段时间,但其他问题优先。
初始性能测试表明,即使使用MemoryMappedFile附加程序,同步日志记录也不会比通过Async Loggers进行异步日志记录更快。
通常,如果您需要翻转行为,建议您现在将Async Loggers与RollingRandomAccessFile附加程序结合使用。