再次运行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/