mybtais log4j输出sql语句到文件

弯曲的编程之路 2017-07-03 04:13:50
jar版本:log4j 1.2.9 mybatis 3.4.2
我的log4j 配置如下:
log4j.rootLogger=DEBUG,console,logDailyFile,errorlogfile,logDB
#log4j.rootLogger=ALL,systemOut,logDailyFile,logRollingFile,errorlogfile,logMail,logDB

log4j.logger.cn.line.up=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.org.springframework=WARN
log4j.logger.org.mybatis=TRACE

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %-5p %l %m%n
log4j.appender.console.Threshold=INFO
log4j.appender.console.Target=System.out
log4j.appender.console.ImmediateFlush=TRUE

log4j.appender.logDailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logDailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.logDailyFile.layout.ConversionPattern=%d %-5p %l %m%n
log4j.appender.logDailyFile.Threshold=DEBUG
log4j.appender.logDailyFile.ImmediateFlush=TRUE
log4j.appender.logDailyFile.Append=TRUE
log4j.appender.logDailyFile.File=${log4j.path}/luck-draw-info.log
log4j.appender.logDailyFile.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.logDailyFile.Encoding=UTF-8

# Save ERROR LOG
log4j.appender.errorlogfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlogfile.File=${log4j.path}/luck-draw-error.log
log4j.appender.errorlogfile.DatePattern='.'yyyy-MM'.log'
log4j.appender.errorlogfile.Append=true
log4j.appender.errorlogfile.Threshold=ERROR
log4j.appender.errorlogfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorlogfile.layout.ConversionPattern=%d %-5p %l %m%n


console中能正常打印sql语句,但是对应的日志文件中只能打印info,不打印sql语句,网上查说是指定mybatis的实现类:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="logImpl" value="LOG4J" />
</settings>
</configuration>

加上之后报:
Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Logger.isTraceEnabled()Z
at org.apache.ibatis.logging.log4j.Log4jImpl.isTraceEnabled(Log4jImpl.java:42)
at org.apache.ibatis.logging.jdbc.BaseJdbcLogger.isTraceEnabled(BaseJdbcLogger.java:176)
at org.apache.ibatis.logging.jdbc.ResultSetLogger.invoke(ResultSetLogger.java:72)
at com.sun.proxy.$Proxy36.next(Unknown Source)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:340)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:317)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:290)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:187)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
at com.sun.proxy.$Proxy19.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:137)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:75)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
at com.sun.proxy.$Proxy29.selectPrizeLevelInfo(Unknown Source)
at cn.line.up.luck.draw.service.impl.LuckDrawServiceImpl.doLuckDraw(LuckDrawServiceImpl.java:63)
at cn.line.up.luck.draw.service.impl.LuckDrawServiceImpl$$FastClassBySpringCGLIB$$8684f0d4.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
at cn.line.up.luck.draw.service.impl.LuckDrawServiceImpl$$EnhancerBySpringCGLIB$$4a77a799.doLuckDraw(<generated>)
at cn.line.up.luck.draw.controller.LuckDrawController.luckDraw(LuckDrawController.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
... 40 more

将log4j版本改为 1.2.17
又报:
Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): ****.mapper.****
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:230)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
at com.sun.proxy.$Proxy29.selectPrizeLevelInfo(Unknown Source)
at cn.line.up.luck.draw.service.impl.LuckDrawServiceImpl.doLuckDraw(LuckDrawServiceImpl.java:63)
at cn.line.up.luck.draw.service.impl.LuckDrawServiceImpl$$FastClassBySpringCGLIB$$8684f0d4.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:721)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
at cn.line.up.luck.draw.service.impl.LuckDrawServiceImpl$$EnhancerBySpringCGLIB$$67f88b3d.doLuckDraw(<generated>)
at cn.line.up.luck.draw.controller.LuckDrawController.luckDraw(LuckDrawController.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:116)

网上查说对应的xml修改一下,保存重新运行,运行正常。
原先状况是console中打印sql,日志文件中不打印,改了之后是console中不打印sql了,日志文件中可以打印了,懵逼中。。。
...全文
307 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
七月 05, 2017 10:03:17 上午 org.apache.catalina.startup.Embedded start
信息: Starting tomcat server
七月 05, 2017 10:03:17 上午 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.29
log4j:WARN No such property [encoding] in org.apache.log4j.jdbc.JDBCAppender.
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
七月 05, 2017 10:03:18 上午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
[DEBUG] Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
[DEBUG] Property 'configuration' or 'configLocation' not specified, using default MyBatis Configuration
[DEBUG] Property 'mapperLocations' was not specified or no matching resources found
2017-07-05 10:03:20,426 INFO  org.hibernate.validator.internal.util.Version.<clinit>(Version.java:30) HV000001: Hibernate Validator 5.2.4.Final
Wed Jul 05 10:03:22 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
七月 05, 2017 10:03:26 上午 org.apache.catalina.core.ApplicationContext log
信息: Set web app root system property: 'webapp.root' = [E:\workspace\line-up\line-service\src\main\webapp\]
七月 05, 2017 10:03:26 上午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring FrameworkServlet 'spring'
[DEBUG] Property 'configuration' or 'configLocation' not specified, using default MyBatis Configuration
[DEBUG] Property 'mapperLocations' was not specified or no matching resources found
七月 05, 2017 10:03:27 上午 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8083
七月 05, 2017 10:03:27 上午 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8083
我看启动日志还是使用Slf4jImpl 实现,我的<setting name="logImpl" value="LOG4J" />配置没起到作用,直接忽略了我的log4j.properites文件,请大神指点下是哪里配置错了?
  • 打赏
  • 举报
回复
引用 1 楼 qq_38755045 的回复:
什么鬼?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧