Java Log4J:无法在FileAppender上更改bufferedIO=true的bufferSize

Java Log4J:无法在FileAppender上更改bufferedIO=true的bufferSize,java,log4j,Java,Log4j,我想我在使用log4j时遇到了问题。我正在尝试启用bufferedio,但是默认的8KB缓冲区大小对于我当前的需要来说太大了 <appender name="MyAppender" class="org.apache.log4j.FileAppender"> <param name="bufferedIO" value="true"/> <param name="bufferSize" value="512"/> <param n

我想我在使用log4j时遇到了问题。我正在尝试启用bufferedio,但是默认的8KB缓冲区大小对于我当前的需要来说太大了

<appender name="MyAppender" class="org.apache.log4j.FileAppender">
    <param name="bufferedIO" value="true"/>
    <param name="bufferSize" value="512"/>
    <param name="Append" value="true"/>
    <param name="File" value="C:/MyMonitor.log"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{dd/MM/yyyy HH:mm:ss}|%m%n"/>
    </layout>
</appender>

<logger name="com.mypackage.MyMonitor">
    <level value="debug"/>
    <appender-ref ref="MyAppender"/>
</logger>

我尝试了不同大小的缓冲区,但只有当缓冲区达到8KB时才会写入文件

我在Log4J中找不到任何描述这个问题的bug,即使我可以找到另一个有同样问题的人(没有任何解决方案)

启用Log4J调试表明我的appender具有适当的缓冲区大小,因此我认为没有人覆盖我的配置

知道我做错了什么吗?这真的是Log4J中的bug还是限制


谢谢。

我注意到,您编写的bufferedIO从小写开始,BufferSize从大写开始。Java默认情况下区分大小写,因此请将所有参数设置为中的(bufferSize应为小写)


据我所知,FileAppender已被弃用。是最接近的替代品。

log4j 1.2.17

深入到源代码,我发现dailrollingfileappender使用java.io.OutputStreamWriter将字符写入日志文件。Threre是OutputStreamWriter中的缓冲区。JDK1.7中的大小是8k(8192)


由于第二个缓存,您将发现:如果设置了log4j.appender.file.bufferSize=8192,即使日志数据也超过8192(FileAppender未被弃用。WriterAppender是FileAppender()的父类)@dertoni哦,对不起。你说得对。那么,我的建议怎么样?有效吗?我尝试过将参数更改为bufferSize,但结果是一样的:(.事实上,我在谷歌搜索解决方案时发现了很多使用BufferSize的示例。在查看log4j代码后,当解析XML参数时,它会自动去首,所以这看起来不像问题。因此,不起作用,是吗?