Log4J.xml配置详解

Appender

Appender:日志输出器,配置日志的输出级别、输出位置等,包括以下几类:

  • ConsoleAppender: 日志输出到控制台;
  • FileAppender:输出到文件;
  • RollingFileAppender:输出到文件,文件达到一定阈值时,自动备份日志文件;
  • DailyRollingFileAppender:可定期备份日志文件,默认一天一个文件,也可设置为每分钟一个、每小时一个;
  • WriterAppender:可自定义日志输出位置。
配置日志信息输出目的地
 1.org.apache.log4j.ConsoleAppender(控制台)  
 2.org.apache.log4j.FileAppender(文件)  
 3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)  
 4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)  
 5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

日志级别

  • 一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF
  • Log4J推荐使用:DEBUG, INFO, WARN, ERROR

输出级别的种类:

OFF 	为最高等级 关闭了日志信息  
FATAL  	为可能导致应用中止的严重事件错误  
ERROR 	为严重错误 主要是程序的错误  
WARN 	为一般警告,比如session丢失  
INFO 	为一般要显示的信息,比如登录登出  
DEBUG 	为程序的调试信息  
TRACE 	为比DEBUG更细粒度的事件信息  
ALL 	为最低等级,将打开所有级别的日志 

输出格式

Log4J最常用的日志输出格式为:org.apache.log4j.PatternLayOut,其主要参数为:

  • %n - 换行
  • %m - 日志内容
  • %p - 日志级别(FATAL, ERROR,WARN, INFO,DEBUG or custom)
  • %r - 程序启动到现在的毫秒数
  • %t - 当前线程名
  • %d - 日期和时间, 一般使用格式 %d{yyyy-MM-dd HH:mm:ss, SSS}
  • %l - 输出日志事件的发生位置, 同 %F%L%C%M
  • %F - java 源文件名
  • %L - java 源码行数
  • %C - java 类名,%C{1} 输出最后一个元素
  • %M - java 方法名

配置日志信息的格式

 1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),  
 2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),  
 3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),  
 4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

日志信息格式中几个符号所代表的含义:

-X号: X信息输出时左对齐;  
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,  
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921  
%r: 输出自应用启动到输出该log信息耗费的毫秒数  
%c: 输出日志信息所属的类目,通常就是所在类的全名  
%t: 输出产生该日志事件的线程名  
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)  
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。  
%%: 输出一个"%"字符  
%F: 输出日志消息产生时所在的文件名称  
%L: 输出代码中的行号  
%m: 输出代码中指定的消息,产生的日志具体信息  
%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行  
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:  
1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。  
2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。  
3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。  
4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

代码示例

代码示例

示例一:






    
    
        
        
            
        

        
        
            
            
            
            
        
    


    
    
        
        
        
        
        
        
        
        
        
        
        
            
        
    


    
    
    
        
        
        
        
        
        
        
        
        `
        
            
            
        
    


    
    
        
        
        
        
        

        
        
        
            
        
    



    
    
        
        
    


    
    
        
        
        
        
    

测试代码:

package com.cas.test;


import org.apache.log4j.Logger;
import org.slf4j.LoggerFactory;

public class TestMain {
	private static final Logger logger = Logger.getLogger(TestMain.class);
	
	private static final org.slf4j.Logger log = LoggerFactory.getLogger(TestMain.class);
	
	public static void main(String[] args) {
//		PropertyConfigurator.configure("D:\\Program Files\\java\\Tomcat\\apache-tomcat-6.0.36.15\\webapps\\qymh_cas\\WEB-INF\\classes\\log4j.properties");
		
		logger.info("DSFSDFSDF");
		
		log.info("SSS");
		log.error("Email send error", "PPPPPPPP");
	}
}

@Component
public class LogTest {
    Logger logger = Logger.getLogger("logTest1");

    @PostConstruct
    public void test(){
        for (int i=0; i<1000; i++) {
            logger.info(i + "----Log.Info----");
            logger.info(i + "----Log.Info----");
            logger.info(i + "----Log.Info----");
        }
    }
}

测试结果:

控制台日志输出展示: 

Log4J.xml配置详解_第1张图片

日志输出文件:

Log4J.xml配置详解_第2张图片


示例二:




 
	
	
	
	
	
	
	
		
		
			
		
	
	
	
	
	
	
	
	
	
	
		
		
		
		  
		
			
		
		
			
			
			
		  
	
	
	
	
		
		
		
		  
		
			
		
	
 
	
	
		
	
	
	
		
	
	
	
		
	
 
	
		
	
 
	
		
	
	
	
		
	
	
	
		
	
	
	
	
	
	
	
	
		
		
		
	
	
	
	
	
		
		
		
	
	
测试代码:
private static final Logger STREAM_OPERATE_LOG = LoggerFactory.getLogger("StreamOperateFile");
STREAM_OPERATE_LOG.info("你要输出的日志信息");
getLogger("StreamOperateFile")的参数和你配置的那个要对应。

最后,真的在配置的地方生成了2个不同的日志文件,而且内容是不重叠的,各自是各自的。

Log4J.xml配置详解_第3张图片

你可能感兴趣的:(Web)