log4jではjavadocは
警告:このバージョンのJDBCAppenderは、将来完全に置き換えられる可能性が非常に高くなります。さらに、例外はログに記録されません。
データベースにログインするにはどうすればよいですか?
動作するだけでなく、接続プールもサポートするデータベースアペンダーを探している場合は、logbackのDBAppenderを検討するよりも、維持され、適切に文書化されています。
皮肉なことに、log4jの将来のバージョンでJDBCAppenderを削除することに関するjavadocsの警告は、私が書いたものです。
別のアペンダーを使用することもできますが、実際にはLog4j 1.2が登場し、長い間標準になります。彼らはレシーバーコンパニオンの一部としてDBAppenderを開発しましたが、これは正式にはリリースされていませんが、ソースコードをダウンロードして、独自のコードを入手することもできます。
例外をログに記録しないという問題が気にならない限り、JDBCAppenderは問題ありません。2.0へのそれ以上のアップグレードは、JDBCAppenderを変更するよりも根本的なものになるため(2.0が発生した場合)、警告にもかかわらず、それを使用することについて心配する必要はありません。彼らは明らかに新しいバージョンを導入するための確固たるロードマップやタイムラインを持っておらず、1.2.15は2007年にリリースされました。
**log4j.properties file**
# Define the root logger with appender file
log4j.rootLogger = DEBUG, DB
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
# Set JDBC URL
log4j.appender.DB.URL=jdbc:mysql://localhost/log
# Set Database Driver
log4j.appender.DB.driver=com.mysql.jdbc.Driver
# Set database user name and password
log4j.appender.DB.user=root
log4j.appender.DB.password=root
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO actionlg(user_id, dated, logger, level, message) values('%X{userId}',' %d{yyyy-MM-dd-HH-mm}','%C','%p','%m')
# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
**Java Class**
Log4jExamples.java
import java.sql.*;
import java.io.*;
import org.apache.log4j.Logger;
import org.apache.log4j.MDC;
public class Log4jExample {
/* Get actual class name to be printed on */
static Logger log = Logger.getLogger(Log4jExample.class.getName());
public static void main(String[] args)throws IOException,SQLException{
log.error("Error");
MDC.put("userId", "1234");
}
}
**libs required**
- mysql-connector-java-3.1.8-bin.jar
- log4j-1.2.17.jar