Java 数小时后,Log4j失去连接数据库

Java 数小时后,Log4j失去连接数据库,java,log4j,Java,Log4j,对于我的web服务,log4j有以下配置: # Define the root logger with appender file log4j.logger.com.package = INFO, DB # Define the DB appender log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender # Set JDBC URL log4j.appender.DB.URL=jdbc:mysql://127.0.0.1/MYDB #

对于我的web服务,log4j有以下配置:

# Define the root logger with appender file
log4j.logger.com.package = INFO, DB

# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender

# Set JDBC URL
log4j.appender.DB.URL=jdbc:mysql://127.0.0.1/MYDB

# Set Database Driver
log4j.appender.DB.driver=com.mysql.jdbc.Driver

# Set database user name and password
log4j.appender.DB.user=agent
log4j.appender.DB.password=secret
# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO TABLE VALUES(TIMESTAMP(now()),'%C','%p','%m')

# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
正常工作,但在数小时后(无操作)失去连接,无法将任何内容保存到数据库中

有一些配置我错过了

是否可以设置如下内容:

log4j.appender.DB.testOnBorrow = true
log4j.appender.DB.validationQuery = "SELECT 1"

您是否尝试过在连接字符串中设置autoreconnect参数

log4j.appender.DB.URL=jdbc:mysql://127.0.0.1/MYDB?autoReconnect=true

检查以确保数据库服务器没有超时日志程序连接的会话,如果您在“几个小时”内没有活动,请从服务器端关闭会话。在MySQL上,这是一个默认值,如果我没有读错的话,默认值为8小时。这是一个服务器端配置。

仔细检查是否关闭了appender。这给我在类似的记录器(Log4Net)上带来了麻烦。这可能会导致对象被释放错误。我唯一的配置就是这个问题。你认为在我称之为close connection的代码中?close将是你的代码和log4j实现的一部分,如果你没有它,那么你正在正确地设置它,问题在别处。