Log4j没有将日志写入数据库

时间:2011-10-06 10:22:42

标签: java log4j

我需要将应用程序的错误记录到数据库中。我在log4j.xml中添加了以下内容 数据库日志没有写入表,但我可以在控制台上看到日志消息。

这可能是什么原因。我的数据库连接字符串详细信息是正确的。

的log4j.xml

  <appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> 
        <param name="URL" value="jdbc:oracle:thin:@host:1521:test" /> 
        <param name="Driver" value="oracle.jdbc.driver.OracleDriver" /> 
        <param name="User" value="scott" /> 
        <param name="Password" value="tiger" /> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" 
              value="INSERT INTO my_table (log_date, log_level, location, message) VALUES ( '%d{ISO8601}','%p',
              '%C;%L', '%m' )" 
            /> 
        </layout> 
    </appender> 
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" 
              value="%d{ISO8601} %p (%C;%L) %m%n" 
            /> 
        </layout> 
    </appender> 
    <logger name="logging.simple.jdbcLogger" additivity="true">
        <level value="info"/> 
        <appender-ref ref="jdbcAppender"/> 
    </logger> 
    <root> 
        <level value="info"/> 
        <appender-ref ref="STDOUT"/> 
    </root> 
</log4j:configuration>

2 个答案:

答案 0 :(得分:4)

您将在控制台上看到日志消息,因为您已将所有日志消息发送到控制台,但只有logging.simple.jdbcLogger层次结构下的记录器才会发送到jdbcAppender }。

您是否在控制台上看到logging.simple.jdbcLogger条消息?

答案 1 :(得分:1)

<appender-ref ref="jdbcAppender"/>添加到<root>...</root>部分。