今天研究了下 Log4J 2,并写了一个最简单的DEMO程序。我的操作系统版本是Win7旗舰版,JDK版本为1.8.0_25。
log4j 2 的官方网站: http://logging.apache.org/log4j/2.x/
log4j 2 的下载地址: http://logging.apache.org/log4j/2.x/download.html
在这里选择一个apache-log4j-2.6.1-bin.zip,点入后会进入一个镜像站,会有一个下载列表,从中下载一个zip文件即可,解压缩后里面有很多jar包。将log4j-api-2.6.1.jar和log4j-core-2.6.1.jar作为ExternalJars引入到工程中。
建立一个配置文件log4j2.config.xml,这是log4j的XML配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</appenders>
<loggers>
<root level="debug">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
这个配置文件的大意是将所有debug以上的日志输出到控制台。
现在工程中添加Java代码如下:
import java.io.FileInputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.ConfigurationSource;
import org.apache.logging.log4j.core.config.Configurator;
/**
* Log4J DEMO Program
* @author Tsybius2014
* @date 2016年7月5日
* @time 下午11:39:07
* @remark
*/
public class Log4JTest {
public static void main(String[] args) {
try {
//读取配置文件
ConfigurationSource source = new ConfigurationSource(
new FileInputStream("C:\\Users\\Tsybius\\Desktop\\log4j2.config.xml"));
Configurator.initialize(null, source);
Logger logger = LogManager.getLogger(Log4JTest.class.getName());
//打印日志1
logger.debug("日志级别:DEBUG");
logger.info("日志级别:INFO");
logger.warn("日志级别:WARN");
logger.error("日志级别:ERROR");
logger.fatal("日志级别:FATAL");
//打印日志2
logger.log(Level.DEBUG, "日志级别:DEBUG");
logger.log(Level.INFO, "日志级别:INFO");
logger.log(Level.WARN, "日志级别:WARN");
logger.log(Level.ERROR, "日志级别:ERROR");
logger.log(Level.FATAL, "日志级别:FATAL");
} catch (Exception ex) {
//打印异常
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
ex.printStackTrace(printWriter);
System.out.println(stringWriter.toString());
}
}
}
这段代码先读取了log4j2.config.xml,再打印log。
程序运行结果如下:
23:36:30.182 [main] DEBUG Log4JTest - 日志级别:DEBUG
23:36:30.185 [main] INFO Log4JTest - 日志级别:INFO
23:36:30.185 [main] WARN Log4JTest - 日志级别:WARN
23:36:30.185 [main] ERROR Log4JTest - 日志级别:ERROR
23:36:30.185 [main] FATAL Log4JTest - 日志级别:FATAL
23:36:30.185 [main] DEBUG Log4JTest - 日志级别:DEBUG
23:36:30.186 [main] INFO Log4JTest - 日志级别:INFO
23:36:30.186 [main] WARN Log4JTest - 日志级别:WARN
23:36:30.186 [main] ERROR Log4JTest - 日志级别:ERROR
23:36:30.186 [main] FATAL Log4JTest - 日志级别:FATAL
END