gpt4 book ai didi

java - 使用 Log4j 登录数据库

转载 作者:行者123 更新时间:2023-11-30 10:08:55 25 4
gpt4 key购买 nike

我正在使用 log4j 的 JDBCAppender 将应用程序的日志记录到数据库中。在某些时候,我得到“MySQLSyntaxErrorException”,我正试图找出原因。

这是我的 log4j.properties 文件;

# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://.../...
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=...
log4j.appender.DB.password=...
log4j.appender.DB.sql=INSERT INTO logs (EventDate,Level,Logger,Location,Message) VALUES( '%d{yyyy-MM-dd HH:mm:ss.SSS}', '%p' , '%c' ,'Test', '%m')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

这是我的 table ;

enter image description here

当我运行我的项目时,出现以下错误;

log4j:ERROR Failed to excute sql com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 ''.

如果我将“%m”参数更改为其他任何内容,则不会发生异常并且日志会成功插入到数据库中。所以,我认为问题出在此处的消息本身,但我无法找出是哪条消息导致的,因为这是一个真正的大项目。

有什么方法可以让我看到实际的 SQL 语句?或者还有什么我可以做的来调试它吗?

最佳答案

当日志消息 %m 本身包含 ' 字符时,可能会发生这种情况。您是否尝试替换 '

INSERT INTO logs (EventDate,Level,Logger,Location,Message) VALUES( 'date_here', 'INFO' , 'com.test.Test' ,'loc', REPLACE('%m','\'','') );

关于java - 使用 Log4j 登录数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53554193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com