有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java log4j:执行sql时出错。appender中的mysql insert存在问题

我的log4j appender有问题,可能会登录到数据库。这是我的附件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration>

<appender name="DB" class="org.apache.log4j.jdbc.JDBCAppender">
<param name="URL" value="jdbc:mysql://localhost/mydb"/>
<param name="driver" value="com.mysql.cj.jdbc.Driver"/>
<param name="user" value="root"/>
<param name="password" value="password"/>
<param name="sql" value="INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')"/>

<layout class="org.apache.log4j.PatternLayout"></layout>
</appender>

<logger name="log4j.rootLogger" additivity="false">
  <level value="DEBUG"/>
  <appender-ref ref="DB"/>
</logger>

 <root>
 <priority value="TRACE"/>
 <appender-ref ref="DB"/>
 </root>

</log4j:configuration>

这是我的主课

import org.apache.log4j.Logger;
import java.sql.*;
import java.io.*;


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

    public static void main(String[] args)throws IOException,SQLException
    {
       log.debug("Debug");
       log.info("Info");
    }
    }

我得到了这个错误

log4j:ERROR Failed to excute sql
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right 
syntax to use near 'Debug' at line 1
 at 
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
at 
com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.StatementImpl.executeUpdateInternal(StatementImpl.java:1393)
at com.mysql.cj.jdbc.StatementImpl.executeLargeUpdate(StatementImpl.java:2353)
at com.mysql.cj.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1303)
at org.apache.log4j.jdbc.JDBCAppender.execute(JDBCAppender.java:218)
at org.apache.log4j.jdbc.JDBCAppender.flushBuffer(JDBCAppender.java:289)
at org.apache.log4j.jdbc.JDBCAppender.append(JDBCAppender.java:186)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
at org.apache.log4j.Category.callAppenders(Category.java:206)
at org.apache.log4j.Category.forcedLog(Category.java:391)
at org.apache.log4j.Category.debug(Category.java:260)
at TestLogger.main(TestLogger.java:13)

可能是什么问题?我尝试在mysql workbench中使用query插入数据库,结果正常。我在这里上了这门附加课和主课https://www.tutorialspoint.com/log4j/log4j_logging_database.htm


共 (0) 个答案