java - 带有 MemoryMappedFile 和中断文件的 Log4j2

标签 java logging configuration log4j log4j2

是否可以将 MemoryMappedFile 与策略一起使用来破坏文件直到固定大小,例如 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 appender 和 Async Loggers 的作者。)

从某种意义上说,MemoryMappedFile appender 仍在进行中(从 Log4j 2.5 开始)。正如您提到的,没有 Rolling 变体。此外,我无法进行任何重要的性能测试。我 made a start前一段时间,但其他问题优先。

初始性能测试表明,即使使用 MemoryMappedFile 附加程序,同步日志记录也不太可能比通过 Async Loggers 进行的异步日志记录更快。 .

通常,如果您需要翻转行为,我建议您暂时将 Async Loggers 与 RollingRandomAccessFile appender 结合使用。

关于java - 带有 MemoryMappedFile 和中断文件的 Log4j2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34879618/

相关文章:

java - 立即向下转换有什么好处?

java - 一个接口(interface)只能实现一个参数化——如何解决?

java - 无法加载库 'kernel32'

kotlin - 如何让 kotlin-logging (MicroUtils) 打印到子类名称而不是抽象类名称?

java - 基于java的配置中的Spring导入

python - MissingSectionHeaderError : File contains no section headers. (configparser)

java - jMeter 在扫描仪读取时挂起

java - 验证由 Play! 的 Logger 类编写的日志消息

linux - 如何禁用 GNOME 桌面屏幕锁定?

android - 有没有办法删除 Urban Airship 的日志消息