Java异常持久化,Log4j进行日志的数据库持久化,说SQL语法异常。

Log4j进行日志的数据库持久化,说SQL语法错误。。。

在properties的配置中。。。。

log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender

log4j.appender.db.BufferSize=1

log4j.appender.db.driver=com.mysql.jdbc.Driver

log4j.appender.db.URL=jdbc:mysql://localhost:3306/home

log4j.appender.db.user=root

log4j.appender.db.password=123323

log4j.appender.db.sql=insert into RESLOG (LogMSG) values (%m)    

log4j.appender.db.layout=org.apache.log4j.PatternLayout

以下是控制台的错误内容:

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 'WebApplicationContext: initialization started)' at line 1

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:526)

at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)

at com.mysql.jdbc.Util.getInstance(Util.java:360)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:978)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1618)

at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)

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.log(Category.java:856)

at org.apache.commons.logging.impl.Log4JLogger.info(Log4JLogger.java:199)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:273)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5221)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3821)

at org.apache.catalina.startup.HostConfig.reload(HostConfig.java:1306)

at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1289)

at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1473)

at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:280)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1141)

at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1377)

at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1381)

at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1349)

at java.lang.Thread.run(Thread.java:744)

我用的是mysql5.6,难道是jar包问题,还是啥原因,求解!!

1114574.gif

------解决思路----------------------

https://svn.apache.org/repos/asf/logging/log4j/trunk/src/main/java/org/apache/log4j/jdbc/JDBCAppender.java

当然,最好的办法就是继承这个类把它的 flushBuffer() 方法中那个操作数据库的地方:

String sql = getLogStatement(logEvent);

execute(sql);

改成:

PreparedStatement stmt = conn.prepareStatement(getSql());

stmt.setString(1, getLayout().format(loggingEvent);

stmt.executeUpdate();

注意这是假设我们的 SQL 语句将会是,类似下面这样,留下一个参数位给 msg 本身:

insert into tableName(..., ?)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573647.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现光晕效果_马自达6车灯升级激光四透镜实现四近四远光

汽车前照明大灯升级案例车型:马自达6灯泡色温:5600K透镜案例:米石激光 TMF激光原车灯泡型号:H1 H1雾灯:H3原车瓦数:80-100W升级方式:支架安装方式:有密封胶性质:热LED解码…

matlab欧拉法程序,欧拉法matlab程序.doc

欧拉法matlab程序.doc 1.Euler法function[x,y]naeuler(dyfun,xspan,y0,h)xxspan(1):h:xspan(2);y(1)y0;forn1:length(x)-1y(n1)y(n)h*f(dyfun,x(n),y(n));endxx ;yy ;x10:0.2:1;y1(12*x1).^0.5;plot(x,y,x1,y1)>>dyfuninline( y-2*x/y );[x,y]naeuler(dyfun,[0,1],1,0.2)…

dns服务器v6解析 windows_04:缓存DNS、Split分离解析、电子邮件通信、Web服务器项目实战...

一、 环境的准备关闭两台虚拟机的SELinux[rootsvr7 ~]# setenforce 0 #修改当前运行模式[rootsvr7 ~]# getenforce #查看当前运行模式Permissive[rootsvr7 ~]# vim /etc/selinux/config #永久修改SELINUXpermissive设置两台虚拟机防火墙[rootsvr7 ~]# firewall-cmd …

linux查看php日志命令,linux查看日志的三种命令是什么,linux查看进程命令

linux查看日志的三种命令是什么Linux查看日志的三个命令是什么,linux查看日志有三个命令:1。查看实时更改日志,代码为[tail-f filename];2.搜索关键字附近的日志代码为[cat-n filename | grep ‘ keyword ‘];3.输入编…

控制器对应view生命周期

一、控制器view创建的六种方式 1.有没有同名xib创建2.通过 storyboard 创建3.有指定xib情况下创建4.有同名xib情况5.有同名去掉controll的情况6.loadveiw 二、创建控制器view的优先级三、控制器view加载顺序0、- (void)loadView …

jQuery全屏滚动插件fullPage.js

演 示 下 载 简介 如今我们经常能见到全屏网站,尤其是国外网站。这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容,显得格外的高端大气上档次。比如 iPhone 5C 的介绍页面(查看),QQ浏览器的官网…

simulink 解析udp数据_DNS 支持 TCP 和 UDP 双协议,但为何偏偏只钟情 UDP?

一、前言之前在聊到 App 网络优化时,聊到通过 HTTPDNS 替换掉传统的 DNS 解析,来达到网络优化的效果。其中提到 DNS 解析,是支持 UDP 和 TCP 双协议的。但是细心的朋友通过 wireshark、sniffer、tcpdump 等抓包工具分析,会发现基本…

php ip2long mysql,PHP基于ip2long实现IP转换整形

如何将四个字段以点分开的IP网络址协议地址转换成整数呢?PHP里有这么一个函数ip2long.比如echo ip2long("10.2.1.3");?>我们将得到167903491这是如何计算的,目前我知道有两个算法。其一function ip2int($ip){//我们先把ip分为四段,$ip1,$i…

查看你某条sql是哪个用户执行的_django_debug_toolbar:查看访问某个页面执行sql的详细...

django_debug_toolbar 是django的第三方工具包,给django扩展了调试功能,包括查看执行的sql语句,db查询次数,request,headers,调试概览等。1、官方推荐的安装方式是:pip install django-debug-to…

unzip 解压_每天一条Linux命令(11) unzip (超详细)

在Linux系统中,命令 unzip 用于解压zip命令或其他压缩软件压缩的zip格式文件。语法:unzip [选项] [压缩文件]常用参数说明:-o 解压时不提示是否覆盖文件-v 解压时显示详细信息-d 指定解压目录-l 不解压,只显示压缩文件内所包含的…

poi导出Excel(分行单元格颜色设置,字体设置,合并单元格,插入图片)

这是一个日报导出功能的代码;图片是用JfreeChars生成好的&#xff0c;话不多少 看代码 public String excelExport(HttpServletRequest request,HttpServletResponse response,CarSaledailyDTO carSaledailyDTO){//获取需要导出的报表数据     List<List<List>>…

vim 复制一行并且粘贴_Vim常用命令2之文本操作

文本操作无非增删改查&#xff0c;搜索&#xff0c;替换&#xff0c;复制粘贴&#xff0c;总结有如下命令&#xff08;正常模式下&#xff09;九四干&#xff1a;Vim常用命令1之移动光标​zhuanlan.zhihu.com1. 增1.1 行内插入i 光标之前插入I 行首插入a光标之后插入A 行末插入…

数据访问增删改查之单项查询

封装类 <?php //纯php,可以删掉html代码直接写 //封装类&#xff0c;这样用起来方便&#xff0c;不必每次都去再写了 //用驼峰法命名类名&#xff0c;首字母大写 class ChaXun { public $host"localhost";//数据库地址,可以直接赋值为"localhost"pu…

import是引进外部函数吗_vue3已正式发布,你学了吗

慌慌张张,匆匆忙忙,vue2还没用好,vue3就来了&#xff1f;&#xff1f;&#xff1f;&#xff1f;真的学不动了.......嘴上说着学不动,只见有的人在偷偷的在学习&#xff0c;我也利用假期看了看vue3...,倒吸一口气&#xff0c;还好差别并不是很大。别问我什么原理&#xff0c;底层…

aoa定位算法matlab仿真,基于信号到达角度(AOA)的定位算法研究

内容摘要&#xff1a;基于信号到达角度(AOA)的定位算法是一种常见的无线传感器网络节点自定位算法&#xff0c;算法通信开销低&#xff0c;定位精度较高。由于各种原因&#xff0c;估测的多个节点位置可能存在不可靠位置&#xff0c;提出了一种改进的基于信号到达角的定位方法&…

各种水龙头拆卸图解_水龙头上包卫生纸,竟有这种效果!邻居看了都想学

你家该大扫除了吗&#xff1f;如何打扫厨房可是个大问题厨房的卫生问题今天一一教你解决洗碗池洗碗池经常不擦&#xff0c;污渍会积得很厚&#xff0c;陈旧老污渍怎么清除呢&#xff1f;方法&#xff1a;白醋 用毛巾裹在水龙头上&#xff0c;倒上白醋。因为白醋具有腐蚀性&…

php按id获取整条数据库,Ajax取得数据库的json值,想通过id获取对应信息,但是都默认获取第一条了...

PHP<?PHP header("Content-Type: text/html; charsetutf-8");include(conn.php);//链接数据库$sql select id,article_name,check_box,radio_box,content,input_name,input_number,input_title,input_describe from article;$res mysqli_query($conn,$sql);$da…

图标圆角角度_UI设计中图标的规范及原则【附全套视频】

icon是一种图标格式&#xff0c;用于系统图标、软件图标等&#xff0c;这种图标扩展名为*.icon、*.ico。常见的软件或windows桌面上的那些图标一般都是ICON格式的。icon元素包括两个可选的子元素:small-icon子元素和large-icon子元素。文件名是Web应用归档文件(WAR)的根的相对路…

设计模式(十一):从文Finder中认识组合模式(Composite Pattern)

上一篇博客中我们从从电影院中认识了"迭代器模式"(Iterator Pattern)&#xff0c;今天我们就从文件系统中来认识一下“组合模式”&#xff08;Composite Pattern&#xff09;。说到组合模式&#xff0c;在此我想聊一下在类图中有组合与聚合的关系&#xff0c;这两者都…

Activity(二)

多个Activity之间的调用 建立一个Activity 配置layout文件夹下fragment_main.xml文件 在layout下新建other.xml文件 xml文件创建的id需要编译才能生成 在同一工程src文件夹下新建class文件 查找id并作关联 加入监听器&#xff0c;调用另一个Activity的类 调用监听器 注&#xf…