目标
文章目标
1、让你可以入门,可以输出日志到控制台和文件中,但不讲输出格式方面的东西;2、说明下Log4j2中的一些概念
目标人群
以前对Log4j没有了解或者了解很少的人或者你就想看看作者多菜的人。但是至少要对日志有个基本了解,例如日志级别。
简介
前几天公司的同事说要使用Log4j2,要抛弃公司自己封装的那一套日志框架了。以前就有从头细致学习Log4j2日志的想法,借着机会就系统的学习下吧!但是在入手的过程中,发现许多基础概念没有,然后别人写的入门教程看不懂,有疑问也不知道找谁,那就自己上,有问题自己解决。本篇主要介绍我当时疑惑的问题,无法入门。
最简单的配置
1、需求
简单的把info级别的日志打印到控制台。
show me code。
也可以看开源代码的start模块。
package learn.log4j2.start;
/** * Created by pengge on 2016/12/7.
* Purpose: 入门代码
*/
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class QuicklyStart {
private static final Logger LOGGER = LogManager.getLogger(QuicklyStart.class);
public static void main(String[] args) {
LOGGER.warn("logger:warn");
LOGGER.error("logger:error");
LOGGER.info("logger:info");
}
}
配置文件。注意文件名必须为:log4j2.xml,且必须放到class目录
<?xml version="1.0" encoding="utf-8"?>
<configuration status="warn">
<appenders>
<Console name="Console" target="SYSTEM_OUT" follow="false">
<PatternLayout pattern="%5p:%d{yyyy-MM-dd HH:mm:ss.SSS}[%M] %m %n"/>
</Console>
</appenders>
<loggers>
<root level="info">
<AppenderRef ref="Console"/>
</root>
</loggers>
</configuration>
这样就可以简单的把日志打印到控制台了。
代码解释
1、xml代码注释
代码主要分为两部分,appenders部分和Loggers部分。其中appenders主要是来配置输出方式,例如输出目的地和输出格式;loggers配置的是创建日志时的名称。log4j2创建日志时有三种方式,1)默认root、2)指定名称、3)父包名。这里用的是全名称匹配,后面会给个事例进行对比。
2、Java代码注释
Java代码很简单,通过调用LogManager.getLogger()方法,使用类名创建了个日志对象。
不同创建对比
public class Two {
private static final Logger rootLogger = LogManager.getRootLogger();
private static final Logger nameLogger = LogManager.getLogger("name");
private static final Logger parentLogger = LogManager.getLogger(Two.class);
public static void main(String[] args) {
rootLogger.warn("rootLogger:warn");
rootLogger.error("rootLogger:error");
rootLogger.info("rootLogger:info");
nameLogger.warn("nameLogger:warn");
nameLogger.error("nameLogger:error");
nameLogger.info("nameLogger:info");
parentLogger.warn("parentLogger:warn");
parentLogger.error("parentLogger:error");
parentLogger.info("parentLogger:info");
}
}
<?xml version="1.0" encoding="utf-8"?><configuration status="warn">
<appenders>
<Console name="Console" target="SYSTEM_OUT" follow="false">
<PatternLayout pattern="%5p:%d{yyyy-MM-dd HH:mm:ss.SSS}[%M] %m %n"/>
</Console>
</appenders>
<loggers>
<logger name="name" level="warn" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<logger name="learn.log4j2" level="error" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<root level="info">
<AppenderRef ref="Console"/>
</root>
</loggers>
</configuration>
上面的例子是对不同方式创建的log进行了对比,如果输出结果,就会明白。
网友评论