4

如何修复错误?

log4j.properties

    # Define the root logger with appender file
log4j.rootLogger = ALL, DB

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

# Set JDBC URL
log4j.appender.DB.URL=jdbc:mysql://localhost/youtube

# 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 logs VALUES('%x','%d','%C','%p','%m')

# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

jdbcAppender.java

public class jdbcAppender{
  /* Get actual class name to be printed on */
  static Logger log = Logger.getLogger(jdbcAppender.class.getName());

  public static void main(String[] args) throws IOException,SQLException{

     log.debug("Debug");
     log.info("Info");
  }
}

数据库

在此处输入图像描述

错误

在此处输入图像描述

4

4 回答 4

3

根据您使用的 MySQL 版本,您需要定义该DATED字段,以便它可以接受DATETIME包含几分之一秒的值。默认情况下,DATETIME接受值为YY-MM-DDDD HH:MM:SS.

在这里阅读:http: //dev.mysql.com/doc/refman/5.6/en/date-and-time-literals.html#date-and-time-standard-sql-literals

您可能遇到的另一个问题是 MySQL 期望分数的分隔符是点 ( .),而不是逗号。您的异常的堆栈跟踪显示逗号作为分隔符,我相信它是从您的系统的语言环境派生的。

于 2012-11-17T21:24:41.280 回答
2

You can change the insert statement to change the date string into an appropriate datetime something like:

log4j.appender.DB.sql=INSERT INTO logs VALUES('%x',STR_TO_DATE( '%d', '%Y-%M-%d %H:%i' ),'%C','%p','%m')

This is not the appropriate format, but just an idea of another approach.

I'm just looking into mysql millisecond handling, but I see the date string is: '2012-11-17 16:07:29,995', Is the 995 part milliseconds, or is the 29,995 part a decimal second?

于 2012-11-17T22:14:24.410 回答
1
log4j.appender.DB.sql=INSERT INTO logs VALUES('%x','%d','%C','%p','%m')

进入

log4j.appender.DB.sql=INSERT INTO logs VALUES('%x','%d{yyyy-MM-dd HH:mm:ss}','%C','%p','%m')
于 2015-02-04T05:44:24.310 回答
0

您可以更改插入语句以将日期字符串转换为适当的格式。就像是:

log4j.appender.DB.sql=INSERT INTO logs VALUES('%x','%d{yyyy-MM-DD HH:MM:SS}','%C','%p','%m')

希望能帮助到你。

于 2015-01-05T10:20:52.600 回答