将速度记录更改为控制台

时间:2011-01-19 17:42:10

标签: java logging velocity

我正在尝试将速度与现有的log4j.xml配置集成,并且正在进行攻击。我似乎无法使用控制台appender - 无论我尝试过什么,它都会发送到velocity.log

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

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

    <appender
        name="consoleAppender"
        class="org.apache.log4j.ConsoleAppender">
        <layout
            class="org.apache.log4j.PatternLayout">
            <param
                name="ConversionPattern"
                value="%d | %5p | %m%n" />
        </layout>
    </appender>

    <logger
        name="runtime.log.logsystem.log4j.category">
        <level
            value="info" />
        <appender-ref
            ref="consoleAppender" />
    </logger>

    <root>
        <priority
            value="info" />
        <appender-ref
            ref="consoleAppender" />
    </root>

</log4j:configuration>

和java代码:

Velocity.setProperty( "runtime.log.logsystem.class", "org.apache.velocity.runtime.log.Log4JLogChute" );

有谁知道如何正常工作?

TIA

3 个答案:

答案 0 :(得分:14)

我通过添加以下属性来实现它:

Velocity.setProperty( "runtime.log.logsystem.log4j.logger", "foo" );

改变这一点:

<logger
    name="runtime.log.logsystem.log4j.category">
    <level
        value="info" />
    <appender-ref
        ref="consoleAppender" />
</logger>

到此:

<logger
    name="foo">
    <level
        value="info" />
    <appender-ref
        ref="consoleAppender" />
</logger>

希望这有助于其他人。


编辑#1:

最后可以通过添加以下属性来完成:

Velocity.setProperty( "runtime.log.logsystem.log4j.logger", "root" );

或使用velocity.properties

runtime.log.logsystem.log4j.logger = root

然后我能够将我的log4j.xml文件更改回我的方式,这有效地将记录的速度更改为默认的velocity.log到我的根记录器被配置的地方 - 一行......去图:)

答案 1 :(得分:1)

不得不深入调试以使其与spring一起工作。

需要注意的是将overrideLogging设置为false。这可以防止弹簧用org.springframework.ui.velocity.CommonsLoggingLogSystem覆盖速度记录器。

<bean id="velocity" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
    <property name="overrideLogging" value="false"/>
    <property name="velocityProperties">
        <props>
            <prop key="runtime.log.logsystem.class">org.apache.velocity.runtime.log.Log4JLogChute</prop>
            <prop key="runtime.log.logsystem.log4j.logger">velocity</prop>
            <!--...-->
    </property>
</bean>

答案 2 :(得分:0)

您确定log4j.xml是log4j选择的日志配置文件吗?类路径上的另一个JAR可能包含它自己的捆绑log4j配置文件。

使用-Dlog4j.debug启动您的应用程序,让log4j发出有关从哪个文件加载配置的信息,以验证是否正在使用目标文件。