java中使用log4j 2(二)

2014-11-24 02:31:40 · 作者: · 浏览: 1
.xml,并将log4j2.xml里的Root level改为”trace”,内容如下:


  

  
  
    
     
      
     
     
   
  
    
     
      
     
     
   

  

再次运行Test01 ,输出如下:

13:24:03.939 [main] TRACE log4j2.Test01 - trace
13:24:03.942 [main] DEBUG log4j2.Test01 - debug
13:24:03.942 [main] INFO  log4j2.Test01 - info
13:24:03.942 [main] WARN  log4j2.Test01 - warn
13:24:03.942 [main] ERROR log4j2.Test01 - error
13:24:03.942 [main] FATAL log4j2.Test01 - fatal

3.2 log4j 2读取绝对路径的配置文件

将log4j2.xml拷贝到E盘下,并将其改名为Test02.xml,然后将Test02.xml里的Root level设置为”debug”

测试代码如下

package log4j2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationFactory.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;

public class Test02 {
	public static void main(String[] args) throws FileNotFoundException {

		//绝对路径配置文件
		ConfigurationSource source = new ConfigurationSource();
		source.setLocation(E:\Test02.xml);
		source.setFile(new File(E:\Test02.xml));
		source.setInputStream(new FileInputStream(E:\Test02.xml));
		Configurator.initialize(null, source);
		
		Logger logger = LogManager.getLogger(Test02.class.getName()); 
		logger.trace(trace);
		logger.debug(debug);
		logger.info(info);
		logger.warn(warn);
		logger.error(error);
		logger.fatal(fatal);
	}

}

Output:

14:54:46.102 [main] DEBUG log4j2.Test02 - debug
14:54:46.105 [main] INFO  log4j2.Test02 - info
14:54:46.105 [main] WARN  log4j2.Test02 - warn
14:54:46.105 [main] ERROR log4j2.Test02 - error
14:54:46.105 [main] FATAL log4j2.Test02 - fatal

可以看到trace内容并没有输出,说明读取配置文件成功

3.3 log4j 2读取相对路径的配置文件

获取运行时路径的方法

package log4j2;

public class Test03 {
	public static void main(String[] args) {
		System.out.println(Working Directory =  +
	              System.getProperty(user.dir));
	}

}

Output:

Working Directory = E:projecteclipseTest

在”E:projecteclipseTestinlog4j2”新建Test03文件夹。

然后将log4j2.xml拷贝到”E:projecteclipseTestinlog4j2Test03”下,并将其改名为Test03.xml,然后将Test03.xml里的Root level设置为”info”

测试代码如下:

package log4j2;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.XMLConfigurationFactory;

public class Test03 {
	public static void main(String[] args) {
		System.out.println(Working Directory =  +
	              System.getProperty(user.dir));
		//相对路径配置文件
		System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, log4j2/Test03/Test03.xml);
				
		Logger logger = LogManager.getLogger(Test03.class.getName()); 
		logger.trace(trace);
		logger.debug(debug);
		logger.info(info);
		logger.warn(warn);
		logger.error(error);
		logger.fatal(fatal);
	}

}

Output:

Working Directory = E:projecteclipseTest
15:11:09.870 [main] INFO  log4j2.Test01 - info
15:11:09.872 [main] WARN  log4j2.Test01 - warn
15:11:09.873 [main] ERROR log4j2.Test01 - error
15:11:09.873 [main] FATAL log4j2.Test01 - fatal

可以看到trace,debug内容并没有输出,说明读取配置文件成功

下面的测试均采用log4j 2读取src下配置文件的方式

4. Appenders

Appender负责定义日志输出的目的地,它可以是控制台(ConsoleAppender)、文件(FileAppender)、以Email的形式发送出去(SMTPAppender)等

Log4j 2官网介绍了20种Appender:http://logging.apache.org/