ログ4jでSQLログをファイルに出力する方法は?
以下の手順に従って設定することで、SQLログをファイルに出力できます。
- Mavenでlog4jの依存を追加します。依存関係は次のとおりです。
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
- ログ4jの設定ファイルに、SQLログを出力するAppenderを追加します。ログ4j.propertiesファイル、log4j.xmlファイルに設定できます。設定例:
log4j.appender.sql=org.apache.log4j.RollingFileAppender
log4j.appender.sql.File=/path/to/sql.log
log4j.appender.sql.MaxFileSize=10MB
log4j.appender.sql.MaxBackupIndex=10
log4j.appender.sql.layout=org.apache.log4j.PatternLayout
log4j.appender.sql.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
ログは/path/to/sql.logファイルに出力され、最大ファイルサイズは10MBに設定され、最大10ファイルがバックアップされます。
- log4j の設定ファイルで、SQL ロガーの Appender と該当の Logger を紐付ける。具体的な設定は次の通り。
log4j.logger.sqlLogger=DEBUG, sql
log4j.additivity.sqlLogger=false
log4j.logger.org.hibernate.SQL=DEBUG, sql
log4j.additivity.org.hibernate.SQL=false
sqlLoggerおよびorg.hibernate.SQLのログレベルをDEBUGに、アペンダーをsqlと名付けたものに出力させ、additivityをfalseにして上位ロガーにログを伝搬しないようにします。
- コード中にLoggerオブジェクトを使用し、SQLログを出力します。例:
import org.apache.log4j.Logger;
public class Example {
private static final Logger logger = Logger.getLogger(Example.class);
public void executeSql(String sql) {
logger.debug("Executing SQL: " + sql);
// 执行SQL语句的代码
}
}
SQLログは、logger.debugメソッドを使用して出力されます。
上記手順により、SQL ログをファイルに出力できます。