Code Bye

myBatis 3.2.3 打印sql语句问题

 
log4j.rootLogger=info, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n

log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#log4j.appender.R.File=../logs/service.log
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[service] %d - %c -%-4r [%t] %-5p %c %x - %m%n

log4j.logger.com.ibatis = debug
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = debug
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = debug
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = debug
log4j.logger.java.sql.Connection = debug
log4j.logger.java.sql.Statement = debug
log4j.logger.java.sql.PreparedStatement = debug,R
log4j.logger.java.sql.ResultSet =debug

log4j.properties 文件内容如上
以下是几个关键的jar文件
log4j-1.2.17.jar
mybatis-3.2.3.jar 
slf4j-log4j12-1.7.5.jar
slf4j-api-1.7.5.jar

问题:在控制台无法打印sql语句,求解

R,自己顶一下
log4j.properties
log4j.rootLogger=DEBUG, Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

这是我的配置文件,楼主可以试一下。告诉我行不行。。

引用 2 楼 NNTT2010 的回复:
log4j.properties
log4j.rootLogger=DEBUG, Console

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

这是我的配置文件,楼主可以试一下。告诉我行不行。。

不行啊,我各种log4j的试,都不行,太让人抓狂了,感觉是上面我列出来的那几个关键jar
包的问题,求解就

一下是我的工程中的所有jar文件
asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar
commons-collections-3.1.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.14.3.jar
struts2-spring-plugin-2.3.14.3.jar
xwork-core-2.3.14.3.jar
aopalliance.jar
aspectjrt.jar
aspectjweaver.jar
spring-aop-3.2.5.RELEASE.jar
spring-aspects-3.2.5.RELEASE.jar
spring-beans-3.2.5.RELEASE.jar
spring-build-src-3.2.5.RELEASE.jar
spring-context-3.2.5.RELEASE.jar
spring-context-support-3.2.5.RELEASE.jar
spring-core-3.2.5.RELEASE.jar
spring-expression-3.2.5.RELEASE.jar
spring-instrument-3.2.5.RELEASE.jar
spring-instrument-tomcat-3.2.5.RELEASE.jar
spring-jdbc-3.2.5.RELEASE.jar
spring-jms-3.2.5.RELEASE.jar
spring-orm-3.2.5.RELEASE.jar
spring-oxm-3.2.5.RELEASE.jar
spring-struts-3.2.5.RELEASE.jar
spring-test-3.2.5.RELEASE.jar
spring-tx-3.2.5.RELEASE.jar
spring-web-3.2.5.RELEASE.jar
spring-webmvc-3.2.5.RELEASE.jar
spring-webmvc-portlet-3.2.5.RELEASE.jar
cglib-2.2.2.jar
commons-dbcp-1.4.jar
commons-pool.jar
dom4j-1.6.1.jar
log4j-1.2.17.jar
mybatis-3.2.3.jar
mybatis-spring-1.2.1.jar
mysql-connector-java-5.0.8-bin.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
logo4J配置文件是不是放在了src的根目录底下
这是我logo4j的
log4j.logger.com.ibatis=info
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=info
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=info
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=info
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug 
引用 5 楼 huixiangdeqiji 的回复:

logo4J配置文件是不是放在了src的根目录底下
这是我logo4j的
log4j.logger.com.ibatis=info
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=info
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=info
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=info
log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug 

位置肯定没有问题,因为添加了log4j.properties文件所以控制台有其他的日志打出的,问题就是执行sql的时候没有将sql语句打印出来,(我同时也去class下面找到,路径没有问题,汗)
你的文件我看着就会有问题(在我的工程里面,不要生气气),但是我还是试了一下,还是不行

这个需要配置一个log4j.xml文件才行。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

  <appender name="intffile" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="File" value="/log/logic_intf.log"/>
      <param name="Append" value="true"/>
      <param name="DatePattern" value=""".""yyyy-MM-dd"/>
      <param name="Threshold" value="debug"/> 
      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%p|%-d{yyyy-MM-dd HH\:mm\:ss}%m%n"/>
      </layout>
   </appender>

   <root>
      <level  value= "debug"/> 
      <appender-ref ref="intffile"/>
   </root>

</log4j:configuration>
引用 7 楼 fangmingshijie 的回复:

这个需要配置一个log4j.xml文件才行。

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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

  <appender name="intffile" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="File" value="/log/logic_intf.log"/>
      <param name="Append" value="true"/>
      <param name="DatePattern" value=""".""yyyy-MM-dd"/>
      <param name="Threshold" value="debug"/> 
      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%p|%-d{yyyy-MM-dd HH\:mm\:ss}%m%n"/>
      </layout>
   </appender>

   <root>
      <level  value= "debug"/> 
      <appender-ref ref="intffile"/>
   </root>

</log4j:configuration>

大版主求解决,你的xml文件我试了,还是不行,大版主能不能稍微楼一眼我上面贴出来的jar包,看看是不是因为某些jar文件冲突或者什么原因,另外下面是我的xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
	<layout class="org.apache.log4j.PatternLayout"> 
		<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" /> 
	</layout> 
</appender> 

<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
	<param name="file" value="${user.home}/foss-framework.log" /> 
	<param name="append" value="true" /> 
	<param name="maxFileSize" value="10MB" /> 
	<param name="maxBackupIndex" value="100" /> 
	<layout class="org.apache.log4j.PatternLayout"> 
		<param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n" /> 
	</layout> 
</appender> 

<appender name="framework" class="com.deppon.foss.framework.server.components.logger.BufferedAppender">
	<layout class="org.apache.log4j.PatternLayout"> 
		<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %5p %c{2}: %m%n" /> 
	</layout> 
</appender> 

<!-- 下面是打印 mybatis语句的配置 --> 
<logger name="com.ibatis" additivity="true"> 
	<level value="DEBUG" /> 
</logger> 

<logger name="java.sql.Connection" additivity="true"> 
	<level value="DEBUG" /> 
</logger> 

<logger name="java.sql.Statement" additivity="true"> 
	<level value="DEBUG" /> 
</logger> 

<logger name="java.sql.PreparedStatement" additivity="true"> 
	<level value="DEBUG" /> 
</logger> 

<logger name="java.sql.ResultSet" additivity="true"> 
	<level value="DEBUG" /> 
</logger> 

<root> 
	<level value="INFO" /> 
	<appender-ref ref="CONSOLE" /> 
	<appender-ref ref="FILE" /> 
	<appender-ref ref="framework" /> 
</root> 
</log4j:configuration>  
引用 7 楼 fangmingshijie 的回复:

这个需要配置一个log4j.xml文件才行。

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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">

  <appender name="intffile" class="org.apache.log4j.DailyRollingFileAppender">
      <param name="File" value="/log/logic_intf.log"/>
      <param name="Append" value="true"/>
      <param name="DatePattern" value=""".""yyyy-MM-dd"/>
      <param name="Threshold" value="debug"/> 
      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%p|%-d{yyyy-MM-dd HH\:mm\:ss}%m%n"/>
      </layout>
   </appender>

   <root>
      <level  value= "debug"/> 
      <appender-ref ref="intffile"/>
   </root>

</log4j:configuration>

还是不行,求大版主解救啊,让人抓狂的节奏啊

把你的slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar先去掉看看
MyBatis provides logging information through the use of an internal log factory. The internal log
factory will delegate logging information to one of the following log implementations:
? SLF4J
? Apache Commons Logging
? Log4J
? JDK logging
The logging solution chosen is based on runtime introspection by the internal MyBatis log factory.
The MyBatis log factory will use the first logging implementation it finds (implementations are
searched in the above order). If MyBatis finds none of the above implementations, then logging will
be disabled.
引用 11 楼 fangmingshijie 的回复:

MyBatis provides logging information through the use of an internal log factory. The internal log
factory will delegate logging information to one of the following log implementations:
? SLF4J
? Apache Commons Logging
? Log4J
? JDK logging
The logging solution chosen is based on runtime introspection by the internal MyBatis log factory.
The MyBatis log factory will use the first logging implementation it finds (implementations are
searched in the above order). If MyBatis finds none of the above implementations, then logging will
be disabled.

slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
这两个去掉还是不行,能打出更多的日志,但是无论我怎么调,log4j.xml还是log4j.properties文件的各种配,都没有办法打印出sql语句

引用 11 楼 fangmingshijie 的回复:

MyBatis provides logging information through the use of an internal log factory. The internal log
factory will delegate logging information to one of the following log implementations:
? SLF4J
? Apache Commons Logging
? Log4J
? JDK logging
The logging solution chosen is based on runtime introspection by the internal MyBatis log factory.
The MyBatis log factory will use the first logging implementation it finds (implementations are
searched in the above order). If MyBatis finds none of the above implementations, then logging will
be disabled.

难道会跟strut2的配置文件和spring的配置文件中的某个配置项有关系?

看看你mybatis-config.xml配置?下面是我以前测试写的

mybatis-config.xml

<?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>

    <typeAliases>
  	   <package name="com.user.entity"/>
 	</typeAliases>
    <mappers>  
  		 <mapper resource="com/tables/xml/UserMapper.xml" /> 
    </mappers>  
</configuration> 


log4j.xml


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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">


《----一下设置很重要》
	<appender name="appender" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="D:/logs/debug.log" />
		<param name="Append" value="true" />
		<param name="threshold" value="DEBUG" />
		<param name="DatePattern" value=""".""yyyy-MM-dd"".txt""" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[xxoo] %p [%t] %c{1}.%M(%L) | %m%n" />
		</layout>
	</appender>
	<logger name="com.ibatis" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Connection" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Statement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.PreparedStatement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.ResultSet" additivity="true">

		<level value="debug" />

	</logger>


《----一下设置很重要》
	<root>
		<priority value="debug" />
		<appender-ref ref="appender" />
	</root>
</log4j:configuration>



40分
<settings><setting name=”logImpl” value=”LOG4J”/></settings>

看看你有没有设置这个

引用 15 楼 fangmingshijie 的回复:

<settings><setting name=”logImpl” value=”LOG4J”/></settings>

看看你有没有设置这个

感谢版主,日志终于出来了,对版主的感谢无以言表,稍后结贴,
另外再问版主一下,怎么在log4j.xml文件中把日志配到控制台(现在的日志是显示在D:/logs/debug.log这个文件中的)

引用 15 楼 fangmingshijie 的回复:

<settings><setting name=”logImpl” value=”LOG4J”/></settings>

看看你有没有设置这个

无以言表的感谢,只能用专家分表示一下啦

appender 后的class改为org.apache.log4j.ConsoleAppender是输出控制台,或者你再配一个class为org.apache.log4j.ConsoleAppender 的<appender节点,root指向这个节点就行。
引用 14 楼 fangmingshijie 的回复:

看看你mybatis-config.xml配置?下面是我以前测试写的


mybatis-config.xml

<?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>

    <typeAliases>
  	   <package name="com.user.entity"/>
 	</typeAliases>
    <mappers>  
  		 <mapper resource="com/tables/xml/UserMapper.xml" /> 
    </mappers>  
</configuration> 


log4j.xml


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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">


《----一下设置很重要》
	<appender name="appender" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="D:/logs/debug.log" />
		<param name="Append" value="true" />
		<param name="threshold" value="DEBUG" />
		<param name="DatePattern" value=""".""yyyy-MM-dd"".txt""" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[xxoo] %p [%t] %c{1}.%M(%L) | %m%n" />
		</layout>
	</appender>
	<logger name="com.ibatis" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Connection" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Statement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.PreparedStatement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.ResultSet" additivity="true">

		<level value="debug" />

	</logger>


《----一下设置很重要》
	<root>
		<priority value="debug" />
		<appender-ref ref="appender" />
	</root>
</log4j:configuration>


为什么我加了<settings><setting name=”logImpl” value=”LOG4J”/></settings>以后 启动tomcat一直报  “The setting logImpl is not known.  Make sure you spelled it correctly (case sensitive).”的错

引用 19 楼 straff 的回复:

Quote: 引用 14 楼 fangmingshijie 的回复:

看看你mybatis-config.xml配置?下面是我以前测试写的


mybatis-config.xml

<?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>

    <typeAliases>
  	   <package name="com.user.entity"/>
 	</typeAliases>
    <mappers>  
  		 <mapper resource="com/tables/xml/UserMapper.xml" /> 
    </mappers>  
</configuration> 


log4j.xml


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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">


《----一下设置很重要》
	<appender name="appender" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="D:/logs/debug.log" />
		<param name="Append" value="true" />
		<param name="threshold" value="DEBUG" />
		<param name="DatePattern" value=""".""yyyy-MM-dd"".txt""" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[xxoo] %p [%t] %c{1}.%M(%L) | %m%n" />
		</layout>
	</appender>
	<logger name="com.ibatis" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Connection" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Statement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.PreparedStatement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.ResultSet" additivity="true">

		<level value="debug" />

	</logger>


《----一下设置很重要》
	<root>
		<priority value="debug" />
		<appender-ref ref="appender" />
	</root>
</log4j:configuration>


为什么我加了<settings><setting name=”logImpl” value=”LOG4J”/></settings>以后 启动tomcat一直报  “The setting logImpl is not known.  Make sure you spelled it correctly (case sensitive).”的错

你的mybatis.jar不对
要用mybatis-3.2.3

麻烦你处理一下你原来处理过的问题,谢谢!
引用 14 楼 fangmingshijie 的回复:

看看你mybatis-config.xml配置?下面是我以前测试写的


mybatis-config.xml

<?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>

    <typeAliases>
  	   <package name="com.user.entity"/>
 	</typeAliases>
    <mappers>  
  		 <mapper resource="com/tables/xml/UserMapper.xml" /> 
    </mappers>  
</configuration> 


log4j.xml


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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">


《----一下设置很重要》
	<appender name="appender" class="org.apache.log4j.DailyRollingFileAppender">
		<param name="File" value="D:/logs/debug.log" />
		<param name="Append" value="true" />
		<param name="threshold" value="DEBUG" />
		<param name="DatePattern" value=""".""yyyy-MM-dd"".txt""" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[xxoo] %p [%t] %c{1}.%M(%L) | %m%n" />
		</layout>
	</appender>
	<logger name="com.ibatis" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Connection" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.Statement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.PreparedStatement" additivity="true">

		<level value="debug" />

	</logger>

	<logger name="java.sql.ResultSet" additivity="true">

		<level value="debug" />

	</logger>


《----一下设置很重要》
	<root>
		<priority value="debug" />
		<appender-ref ref="appender" />
	</root>
</log4j:configuration>


大神啊 终于打印出sql了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明myBatis 3.2.3 打印sql语句问题