springmvc结合log4j.xml

l       什么是log4j?

Log4J 是Apache 的一个开源项目,是一个在我们编写代码过程提供实现日志输出功能的包。Log4J 可以实现通过配置的方式日志输出、日志目的地定义、日志格式定义 等功能,有效的管理日志。在使用Log4J 之前先看一下几个概念:

 

l       log4j 基本概念

在使用Log4j 之前,先看看3 个基本概念:Looger,Appender,PatternLayout

 

 

    三者关系如下:

 

springmvc结合log4j.xml_第1张图片

图1:Logger,Appender,PatternLayout关系图

 

    1. Logger : 日志输出器,提供输出日志功能。

Log4J 内置了7 中Log 等级,从低到高分别为ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF 。每个Logger 都要默认定义一个等级。同时对于每一条要输出的日志也定义了等级,不同等级的日志用不同的方法调用,共5 种等级(DEBUG, INFO, WARN, ERROR, FATAL), 通过如下方法写出日志:

Logger logger=Logger.getLogger( “logname ”);

logger.info(“…”);

logger.error(“…”);

logger.debug(“…”);

logger.warn(“…”);

logger.fatal(“…”);

如果日志的等级高于等于日志输出器的等级,那么该日志才会被写入。

    2.Appender : 日志目的地,用来定义日志目的地对象。

在日志写出之前还必须先定义好日志器对应的日志目的地。一个日志器可以定义多个目的地。日志目的地有多种类型。其结构如下:

 

 

图2:Appender结构图

 

 

其中Appender 是顶层接口,下面定义了很多种Appender ,几种常见的Appender 解释如下:

 

ConsoleAppender: 控制台作为日志输出地

FileAppender: 文件作为日志输出地

RollingFileAppender: 日志文件的大小受到限制,当内容超出最大的限制时,该文件将向上滚动。

其他的类型笔者也未曾深入研究。

    3.PatternLayout :日志布局,用于定义日志格式。

定义日志布局,指定在日志输出到目的地的时候以怎样的格式被输出。


================================================================================================================

下面具体代码

1.web.xml

<span style="color:#333333;">	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>WEB-INF/log4j.xml</param-value> </span><span style="color:#ff0000;">这个指定了log4j.xml放置的目录</span><span style="color:#333333;">
	</context-param>
	
	<listener>  
	    <listener-class>  
	        org.springframework.web.util.Log4jConfigListener  </span><span style="color:#ff0000;">一定要加上这个listener</span><span style="color:#333333;">
	    </listener-class>  
	</listener> </span>


2.log4j.xml

<pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

 	<appender name="debugappender" class="org.apache.log4j.RollingFileAppender">
		<param name="File" value="/tmp/log11111.log"/>
		<param name="MaxFileSize" value="10240KB"/>
		<param name="MaxBackupIndex" value="50"/>
		<param name="Encoding" value="UTF-8"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %m (%F:%M:%L)%n"/>
		</layout>
	</appender>
	
	<appender name = "file.log" class = "org.apache.log4j.FileAppender" >  
       <param name = "File" value = "/tmp/log22222.log" />  
       <param name = "Append" value = "false" />  
       <layout class = "org.apache.log4j.PatternLayout" >  
           <param name = "ConversionPattern" value = "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %m (%F:%M:%L)%n" />
       </layout >  
    </appender >
    
    <appender name = "console.log" class = "org.apache.log4j.ConsoleAppender" >  
       <layout class = "org.apache.log4j.PatternLayout" >  
           <param name = "ConversionPattern" value = "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %m (%F:%M:%L)%n" />  
       </layout >  
    </appender >  
   

	<logger name="net.spring.controller"> 这里的name是对应项目包的路径,指定这个包路径下面都用这个logger的配置
		<level value="DEBUG" />
		<appender-ref ref="file.log" /> 这里指参照file.log这个appender
	</logger>
	
</log4j:configuration>

 3.HelloWorldController.java

import org.apache.log4j.Logger; //用apache下面的Logger

@Controller
public class HelloWorldController {

	Logger logger = Logger.getLogger(HelloWorldController.class);
	
	@RequestMapping("hello")
	public String helloWorld() {
		logger.error("zzzzzzzzzzzzzzzzzzzzzzzzz");
		return "helloView";
	}
}


输出效果:2015-01-22 13:54:53.300 ERROR zzzzzzzzzzzzzzzzzzzzzzzzz (HelloWorldController.java:helloWorld:26)输出效果:

你可能感兴趣的:(log4j)