在写入之前,AsyncAppender不会等待缓冲区已满

时间:2016-12-04 12:28:02

标签: java logging log4j asyncappender

我正在学习Log4j,我正在使用的书正在解释AsyncAppenders。我将缓冲区大小设置为128(LoggingEvents)。该书解释说,在达到缓冲区大小之前不会打印任何消息,但是无论缓冲区大小如何,我的程序都会打印日志消息。

为什么会这样?如果有人知道如何使用它们,我将不胜感激任何有关AsyncAppenders的指示:)

的log4j.xml

Settings
    General
        Enum List          Proper combobox
        Select Account     Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item
                           Xceed.Wpf.Toolkit.PropertyGrid.Attributes.Item

Java代码

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
    debug="true">

    <appender name="ASYNC" class="org.apache.log4j.AsyncAppender">
    <appender-ref ref="CONSOLE"/>
    <param name="BufferSize" value="128"/>
    </appender>

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d %-5p [%t] - %m%n"/>
    </layout>
    </appender>

    <logger name="org.example.christopher" additivity="false">
    <level value="debug"/>
    <appender-ref ref="ASYNC"/>
    </logger>
    <root>
    <priority value="debug"/>
    </root>
    </log4j:configuration>

0 个答案:

没有答案