Apache Log4j2日志配置
一、Log4j概念
Log4j是一款可以记录测试日志的开源项目。通过调用其API记录日志信息,可以让我们在执行用例时不必守在电脑面前等待结果,仅需在用例执行完成后,通过Log4j收集到的代码执行信息查看执行结果,以调试程序。
它主要由3个部分组成:
1) Logger:Logger类帮助记录不同日志级别的信息:trace < debug < info < warn < error < fatal ,越往后级别越高,输出的日志信息也越少;
2) Appenders:Appenders是一个对象,log4j支持多种appenders样式用以设置日志输出到不同目的地,可以指定输出目的为控制台、数据库或具体的文件路径;
3) Layout:Layout类用来配置日志最终的输出格式;
Log4j现在推出了Log4j2,本文中主要介绍Log4j2的配置。
二、Log4j2的配置
Log4j2没有默认的配置文件,需要我们自己去创建配置文件以设置日志。
1) 下载log4j2的jar包:
在apache官网下载:https://logging.apache.org/log4j/2.x/download.html ,选择二进制的zip包:
在跳转后的页面中选择其中一个服务器即可,我选的是第一个,点击后即可下载:
下载至本地后解压,我们只需要取其中的log4j-api-2.11.1.jar和log4j-core-2.11.1.jar这两个包即可:
然后在IntelliJ IDEA中点击File ---> Project Structure ---> Modules中导入这两个jar文件即可。
或者我们可以在maven仓库中,分别搜索log4j api和log4j core,搜索到内容后分别把代码复制下来,在pom.xml文件中添加依赖,这个依据个人操作习惯而定,下图是添加依赖的代码:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
2) log4j2配置文件
本文主要讲xml文件的配置,首先配置文件的名称必须为“log4j2.xml”,并且该文件必须在源文件夹下才能生效!
创建log4j2.xml文件后,将其父文件夹设置为源文件夹,右键文件夹 ---> Mark Directory as ---> Resource Root:
然后打开log4j2.xml文件,输入配置内容:
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <!--指定日志文件的名称--> <RollingFile name="File" fileName="logs/log4j2.log" filePattern="logs/log4j2-%d{yyyy-MM-dd}.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm.ss} %-5level %c{1} -%msg%n" /> <Policies> <!-- 指定日志文件每天生成一个新的日志文件;如果日志大于100kb,则重新生成一个 --> <!-- <TimeBasedTriggeringPolicy interval="1" modulate="true" /> --> <SizeBasedTriggeringPolicy size="100KB" /> </Policies> </RollingFile> <!--配置输出到控制台--> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm.ss} [%t] %-5level %logger{36} - %msg%n" /> </Console> </Appenders> <Loggers> <Root level="trace"> <AppenderRef ref="File" /> </Root> </Loggers> </Configuration>
这样,我们的log4j2配置文件就配置好了。由于上面指定了日志文件需要存放在logs目录下,因此我们需要在该项目中,在和src同级的位置,创建一个名为logs的文件夹,第一次日志运行后,会自动在该文件夹下创建一个名为log4j2.log的日志文件,我们的日志就在这个文件中记录。
3) 在程序中运用日志
package com.hizuche.testcase.log; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; public class Log4jDemo { private static Logger logger = LogManager.getLogger(Login.class.getName()); public static void main(String[] args) { logger.debug("第一次记录debug信息"); logger.error("第一次记录error信息"); logger.fatal("第一次记录fatal信息"); } }
然后,我们在testng.xml文件中运行这个类,如果你用的是eclipse,那么此时已经生成了日志文件;如果是IntelliJ IDEA,会发现并没有生成对应的日志文件,因为IntelliJ IDEA默认是不输出日志的,需要在Run ---> Edit Configurations中对需要运行的类配置如下:
然后到我们的logs目录下查看,发现日志已经跑起来了。