vlambda博客
学习文章列表

log4j(不知道有没有被这些英文吓到呢)

log4j.jar

我们在执行的过程,我们我们根本不知道我们我们写的sql语句在底层是什么样的,以及执行的日志是什么样的很不利于我们寻找错误。

MyBatis provides logging information through the use of an internal log factory.
【MyBatis提供日志信息通过使用内部的日志工厂。】
The internal log factory will delegate logging information to one of the following log implementations:
【这个内部工厂将授权日志信息给下列实现的一个:】
• SLF4J
• Apache Commons Logging
• Log4j 2
• Log4j
• JDK logging
The logging solution chosen is based on runtime introspection by the internal MyBatis log factory.
【这个日志解决是基于运行时通过内部的MyBatis日志工厂自省选择的。】
The MyBatis log factory will use the first logging implementation it finds (implementations are searched in the above order).
【MyBatis日志工厂将使用第一个找到的日志实现(实现被搜索时如上的顺序)。】
If MyBatis finds none of the above implementations, then logging will be disabled.
【如果MyBatis发现没有上述的实现,那么日志会被禁用。】
Many environments ship Commons Logging as a part of the application server classpath (good examples include Tomcat and WebSphere).
【很多的环境都安装了Commons Logging作为应用服务器类路径的一部分(好的例子包括Tomcat 和 WebSphere)】
It is important to know that in such environments, MyBatis will use Commons Logging as the logging implementation.
【这是很重要的知道在这样的环境下,MyBatis将使用Common Logging作为日志实现。】
In an environment like WebSphere this will mean that your Log4J configuration will be ignored because WebSphere supplies its own proprietary implementation of Commons Logging.
【在一个环境里像WebSphere,这将意味着你的Log4J配置将被忽略,因为WebSphere提供了自己的专有的实现。】
This can be very frustrating because it will appear that MyBatis is ignoring your Log4J configuration (in fact, MyBatis is ignoring your Log4J configuration because MyBatis will use Commons Logging in such environments).
【这可能是非常令人沮丧的,因为它将表现出MyBatis忽略你的Log4J配置(事实上,MyBatis忽略你的Log4J配置是因为MyBatis将使用Commons Logging在这样的环境内)。】
If your application is running in an environment where Commons Logging is included in the classpath but you would rather use one of the other logging implementations you can select a different logging implementation by adding a setting in mybatis-config.xml file as follows:
【如果你的应用正运行在这样的一个环境内,在这个环境内Commons Logging是被包括在类路径里的,但是你宁愿使用其他实现中的一个,你可以选择不同的日志实现,通过添加一个配置在mybatis-config.xml文件内,如下:】
<configuration>
<settings>
...
<setting name="logImpl" value="LOG4J"/>
...
</settings>
</configuration>
Valid values are SLF4J, LOG4J, LOG4J2, JDK_LOGGING, COMMONS_LOGGING, STDOUT_LOGGING, NO_LOGGING or a full qualified class name that implements org.apache.ibatis.logging.Log and gets an string as a constructor parameter.
【有效值是SLF4J、LOG4J、LOG4J2、JDK_LOGGING、COMMONS_LOGGING、STDOUT_LOGGING、NO_LOGGING或一个完全限定的类名实现org.apache.ibatis.log并获取一个字符串作为构造函数参数的完全限定类名。】
You can also select the implementation by calling one of the following methods:
【你也可以选择一个实现通过调用下面其中之一的方法:】
org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
org.apache.ibatis.logging.LogFactory.useLog4JLogging();
org.apache.ibatis.logging.LogFactory.useLog4J2Logging();
org.apache.ibatis.logging.LogFactory.useJdkLogging();
org.apache.ibatis.logging.LogFactory.useCommonsLogging();
org.apache.ibatis.logging.LogFactory.useStdOutLogging();
If you choose to call one of these methods, you should do so before calling any other MyBatis method.
【如果你选择调用这些方法中的一个,你应该在调用任何其他MyBatis方法之前这样做。】
Also, these methods will only switch to the requested log implementation if that implementation is available on the runtime classpath.
【另外,这些方法将只会切换到请求的日志实现,如果这个实现是可以得到的在运行时的类路径上。】
For example, if you try to select Log4J logging and Log4J is not available at runtime, then MyBatis will ignore the request to use Log4J and will use it's normal algorithm for discovering logging implementations.
【举个例子,如果你尝试选择Log4J日志,并且Log4J是不能获得的在运行时,那么,MyBati江南忽略这个请求去使用Log4J而将使用它的常规算法来发现日志实现。】
The specifics of SLF4J, Apache Commons Logging, Apache Log4J and the JDK Logging API are beyond the scope of this document.
【SLF4J、Apache Commons Logging、Apache Log4J和JDK Logging API的细节超出了本文档的范围。】
However the example configuration below should get you started.
【但是,下面例子的配置应该使你可以入门。】
If you would like to know more about these frameworks, you can get more information from the following locations:
【如果你想了解更多有关这些架构的资料,请浏览以下网址:】
• SLF4J
• Apache Commons Logging
• Apache Log4j 1.x and 2.x
• JDK Logging API

这里我们介绍log4j.jar(Apache组织的的一个开源项目),通过配置文件我们可以决定log信息的输送位置,比如说控制台,文件,GUI组件等等;通过配置文件还可以控制每一条信息的级别,从而选择是否输出;这样执行底层数据库查询的时候可以打印sql语句,以及一些运行的日志,这个jar包是mybatis下载时自带的——log4j.jar,使用还需要自己手写一个.properties的配置文件。

提供一份.properties的文件。

log4j.rootLogger=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
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

<欢迎指正错误,完善细节>