zoukankan      html  css  js  c++  java
  • Log4j 简单概念及示例.

    Loggers, Appenders and Layouts
    Log4j has three main components: loggers, appenders and layouts. These three 
    
    types of components work together to enable developers to log messages according 
    
    to message type and level, and to control at runtime how these messages are 
    
    formatted and where they are reported.
    
    This rule is at the heart of log4j. It assumes that levels are ordered. For the 
    
    standard levels, we have DEBUG < INFO < WARN < ERROR < FATAL.
    
    Appender:
     an output destination is called an appender.
    For example, if a console appender is added to the root logger, then all enabled 
    
    logging requests will at least print on the console.
    
    
    
    Here is a sample configuration file that results in identical output as the previous BasicConfigurator based example.
    
    ------------------------------------------------
    # Set root logger level to DEBUG and its only appender to A1.
    log4j.rootLogger=DEBUG, A1
    
    # A1 is set to be a ConsoleAppender.
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    
    # A1 uses PatternLayout.
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
     
    
    
    Suppose we are no longer interested in seeing the output of any component belonging to the com.foo package. The following configuration file shows one possible way of achieving this.
    
    
    log4j.rootLogger=DEBUG, A1
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    
    # Print the date in ISO 8601 format
    log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    
    # Print only messages of level WARN or above in the package com.foo.
    log4j.logger.com.foo=WARN 
    
    -----------------------------
    
    log4j.rootLogger=debug, stdout, R
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    
    # Pattern to output the caller's file name and line number.
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
    
    log4j.appender.R=org.apache.log4j.RollingFileAppender
    log4j.appender.R.File=example.log
    
    log4j.appender.R.MaxFileSize=100KB
    # Keep one backup file
    log4j.appender.R.MaxBackupIndex=1
    
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
     
    
    
    Calling the enhanced MyApp with the this configuration file will output the following on the console.
    
     INFO [main] (MyApp2.java:12) - Entering application.
    DEBUG [main] (Bar.java:8) - Doing it again!
     INFO [main] (MyApp2.java:15) - Exiting application.
    
    -----------------------------------------------
    
    
    #ERROR为等级,FILE为Appender
    log4j.rootLogger=ERROR,CONSOLE,FILE
    #定义一个新的logger,名称为admin,可通过Logger.getLogger("admin")获得,继承了rootLogger的配置
    log4j.logger.admin=WARN
    
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.conversionPattern=%p-[%d] -%M (%F\:%L) %m%n%n
    
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=c\:/risen_app.log
    log4j.appender.FILE.MaxFileSize=2000KB
    log4j.appender.FILE.MaxBackupIndex=1
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=%d %-5p %c - %m%n
    



    //MyApp.java
    
    package com.test.log4j;
    
    import org.apache.log4j.BasicConfigurator;
    import org.apache.log4j.Logger;
    
    public class MyApp {
    	// Define a static logger variable so that it references the
    	// Logger instance named "MyApp".
    	static Logger log=Logger.getLogger(MyApp.class);
    	//按名称取logger
    	//static Logger log=Logger.getLogger("admin");
    	public static void main(String[] args) {
    		 // Set up a simple configuration that logs on the console.
    	     BasicConfigurator.configure();
    		log.debug("MyApp 启动");
    		Foo f=new Foo();
    		f.doIt();
    		log.fatal("MyApp 中止");
    		
    	}
    }
    
    //Foo.java
    
    package com.test.log4j;
    import org.apache.log4j.Logger;
    public class Foo {
    	static Logger log=Logger.getLogger(Foo.class);
    	public void doIt(){
    		
    		log.info("Foo DoIt.");
    	}
    }
    
    log4j.properties
    log4j.rootLogger=INFO,FILE
    #定义一个新的logger,名称为admin,可通过Logger.getLogger("admin")获得,继承了rootLogger的配置
    log4j.logger.admin=DEBUG
    
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.conversionPattern=%p-[%d] -%M (%F\:%L) %m%n%n
    
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=c\:/wcg.log
    log4j.appender.FILE.MaxFileSize=2000KB
    log4j.appender.FILE.MaxBackupIndex=1
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=%d %-5p %c - %m%n
    
  • 相关阅读:
    解释JUnit中@BeforeClass和@AfterClass标注的方法必须是static的,而在TestNg不必
    总结TestNg与JUnit的异同
    FitNesseRoot/ErrorLogs目录下可查看fitnesse输出日志
    项目构建工具ant的使用
    用插件maven-surefire-report-plugin生成html格式测试报告
    fitnesse生成的FitNesseRoot路径问题
    fitnesse管理引进的jar包
    简要总结selenium四个工具组
    selenium 2 设置浏览器安装路径
    磁盘IO
  • 原文地址:https://www.cnblogs.com/wucg/p/2024069.html
Copyright © 2011-2022 走看看