tomcat 7,spring 3,mybatis 3 配置log4j日志组件

tomcat,spring,mybatis都内置通用的日志输出框架,可以配合各种具体的日志组件实现来输出日志,而log4j是最常用的日志组件。

tomcat和spring都使用JCL(Jakarta Commons Logging)日志框架,而mybatis貌似是自己实现的日志框架,三者都可以使用常见的日志组件来输出日志。

tomcat 7

tomcat使用JCL日志框架,默认配置使用JDK提供的JUL(java.util.logging)输出tomcat内部日志。也可以配置使用log4j来输出tomcat内部日志
注意这里是配置tomcat自身日志的输出,在tomcat上运行的应用程序可以单独配置日志输出组件比如log4j,二者互不影响。

在tomcat上运行的应用程序可以使用以下方式来输出日志:

  • 使用JAVA API java.util.logging
  • 使用servlet规范提供的API javax.servlet.ServletContext.log(…)
  • 使用自己选择的日志组件,比如使用log4j

tomcat控制台输出

当在unix like系统上运行tomcat时,控制台输出被重定向到一个名字可配置的文件中,通常这个文件为catalina.out。因此所有写到System.err/out的输出都被写入这个文件中。包括:

  • 使用java.lang.ThreadGroup.uncaughtException(..)输出的未捕获异常
  • 线程dump
  • 应用程序的System.out/System.err输出,这是不推荐的方式,尽量不要使用,推荐使用日志输出组件

spring 3

spring 3 使用JCL日志框架,可以动态发现可以使用的日志组件,只要将日志组件的jar包扔到classpath路径里面就可以了,如果不使用其他日志组件,则spring 3使用java.util.logging来输出日志。

不过spring工程更倾向于使用SLF4J,历史原因选择了JCL框架。

spring配置使用log4j也比较简单,只要将log4j-x.x.x.jar包放入classpath,然后提供一个配置文件log4j.properties放置在classpath根路径下,比如WEB-INF/classes目录下即可。

spring提供了一个listener来配置log4j,可以设置配置文件路径等相关设置,在web.xml中配置此listener:

   <!-- web应用程序根路径映射,如果不设置此参数,默认映射到变量webapp.root,log4j.propertiesw文件中
可以使用${webapp.root}来引用web应用程序根路径 -->
    <context-param>  
        <param-name>webAppRootKey</param-name>  
        <param-value>webapp.root</param-value>  
    </context-param>
    <!-- log4j.properties配置文件路径 -->
    <context-param>  
        <param-name>log4jConfigLocation</param-name>  
        <param-value>WEB-INF/log4j.properties</param-value>  
    </context-param>  
    <context-param>  
        <param-name>log4jRefreshInterval</param-name>  
        <param-value>3000</param-value>  
    </context-param>
    <listener>  
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
    </listener>  

这里将log4j.properties配置到WEB-INF目录下,方便统一管理应用程序的配置文件

mybatis 3

mybatis 3 也支持使用log4j日志组件,在spring mybatis集成应用程序中,mybatis直接使用spring的log4j设置即可,只要将mybaits相关的日志配置写入共用的配置文件log4j.properties即可。比如对映射器日志设置如下:

log4j.logger.net.openwares.test.mapper = TRACE
甚至可以对映射器里面映射的语句设置日志数据级别
log4j.logger.net.openwares.test.mapper.selectXXX = TRACE

对于独立使用的mybatis,需要在mybatis-config.xml文件中添加:

<configuration>
  <settings>
    ...
    <setting name="logImpl" value="LOG4J"/>
    ...
  </settings>
</configuration>

然后将log4j jar包和log4j.properties文件放入classpath。

log4j简单配置

#Global configuration
log4j.rootLogger = DEBUG, stdout, logfile
 
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %5p [%t] - %m%n
 
log4j.appender.logfile = org.apache.log4j.FileAppender
log4j.appender.logfile.File = ${webapp.root}/WEB-INF/logs/debug.log
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern = %5p [%t] - %m%n
 
#Spring config
#log4j.logger.org.springframewaork = DEBUG
 
#Mybatis config
#log4j.logger.org.apache.ibatis = DEBUG
log4j.logger.net.openwares.test.mapper = TRACE
 
#JDBC config
#log4j.logger.java.sql.Connection = DEBUG  
#log4j.logger.java.sql.Statement = DEBUG  
#log4j.logger.java.sql.PreparedStatement = DEBUG  
#log4j.logger.java.sql.ResultSet = DEBUG

log4j的主要概念就是logger,appender,layout还有logging level。
log4j的详细用法参见官方文档

log4j简单使用

import org.apache.log4j.Logger;
 
public class helloLog {
    private static Logger logger = Logger.getLogger(helloLog.class.getName());
    public void MethodXXX(){
        logger.debug("xxx");
        logger.info("xxx");
        ...
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值