0

log4j と spring JDBC で問題に直面しています。私は何かを見逃しているかもしれないので、誤解が生じた場合は遠慮なく訂正してください。

現在、log4j.xml ファイルを使用しています

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p %C{1}.%M - %m%n" />
    </layout>
</appender>
<appender name="stationPdf" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="./log/stationPdf.log" />
    <param name="Append" value="true" />
    <param name="MaxFileSize" value="5000KB" />
    <param name="MaxBackupIndex" value="3" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %p %C{1}.%M - %m%n" />
    </layout>
</appender>

<category name="com.mypackage">
    <level value="debug" />
    <appender-ref ref="stationPdf" />
</category>
<category name="org.springframework.jdbc">
    <level value="debug" />
    <appender-ref ref="stationPdf" />
</category>
<root>
    <level value="debug" />
    <appender-ref ref="console" />
    <appender-ref ref="stationPdf" />
</root>

ご覧のとおり、主に特定のファイル内のすべてをリダイレクトしています。主な問題は、Spring JDBC に関連しています。小さなデータベースを使用してプロパティを保存しています。このデータベースに接続してデータを抽出する必要があります。

したがって、パスワードを間違えると、予想どおり次の例外が発生します。

    Exception in thread "AWT-EventQueue-0" org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:573)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:637)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:666)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:674)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:729)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:749)
    at com.mypackage.dao.impl.PropertiesDaoJdbcImpl.selectProperty(PropertiesDaoJdbcImpl.java:37)
    at com.mypackage.data.ExtractedDataClass.loadProperties(ExtractedDataClass.java:42)
    at com.mypackage.accueil.Accueil.<init>(Accueil.java:138)
    at com.mypackage.accueil.Accueil$12.run(Accueil.java:896)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
[...]
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
[...]

Caused by: java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4098)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4030)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:951)
    [...]

問題は、ログ ファイルでこの例外を取得できないことです。コンソールには表示されますが、ファイルには表示されません。これらの例外を取得するには、log4j.xml ファイルに何を使用、追加、または削除する必要がありますか?

前もって感謝します、

おおよその英語で申し訳ありません:)

4

1 に答える 1

1

エラーメッセージが始まるという事実

Exception in thread "AWT-EventQueue-0"

すべてのJavaスレッドがデフォルトで取得する標準の「キャッチされていない例外」ロジックのために、log4jを介してまったくログに記録されていないことを示唆しています. 独自のコードの適切なポイントで例外をキャッチし、自分でログに記録する必要があります。

于 2012-09-11T09:56:32.293 に答える