一、如何给不同的包设置不同的日志级别?
1、针对不同的包来记录不同级别的日志信息

2、在日志xml配置文件中加入配置信息(红色标注)
1 <?xml version="1.0" encoding="UTF-8"?>
2 <Configuration>
3 <!-- 将log信息记录到指定文件夹中 -->
4 <!-- “.”表示当前路径, ./logs表示将log信息存放到该项目的logs文件夹中 -->
5 <Properties>
6 <Property name="basePath">./logs</Property>
7 </Properties>
8 <!-- appenders表示日志输出的位置 -->
9 <Appenders>
10 <!-- 给记录日志的文件命名 -->
11 <RollingFile
12 name="File"
13 fileName="${basePath}/app.log"
14 filePattern="${basePath}/app-%d{yyyy-MM-dd}.log">
15 <!-- 设置输出的log信息格式 -->
16 <PatternLayout
17 pattern="%d{HH:mm:ss.SSS} %-5level %c{2} -%msg%n" />
18 <Policies>
19 <!-- 基于时间触发生成文件的策略 -->
20 <!-- interval="1"表示每隔一天就会创建新的日志文件 -->
21 <TimeBasedTriggeringPolicy
22 interval="1"
23 modulate="true" />
24 <!-- 基于大小触发生成文件的策略 -->
25 <SizeBasedTriggeringPolicy size="100 KB" />
26 </Policies>
27 </RollingFile>
28 <!-- 表示在控制台上输出信息 -->
29 <Console name="Console">
30 <!-- 设置输出的log信息格式 -->
31 <PatternLayout
32 pattern="%d{HH:mm:ss.SSS} %-5level %c{2} -%msg%n" />
33 </Console>
34 </Appenders>
35 <Loggers>
36 <!-- 从不同的包中记录不同级别的日志信息 -->
37 <!-- 设置log4jtutorial包中记录info级别以上的日志信息 -->
38 <logger
39 name="log4jtutorial"
40 level="info"
41 additivity="false">
42 <AppenderRef ref="File" />
43 </logger>
44 <!-- 设置log4j包中只记录debug级别以上的日志信息 -->
45 <logger
46 name="log4j"
47 level="debug"
48 additivity="false">
49 <AppenderRef ref="File" />
50 </logger>
51 <!-- 定义级别 -->
52 <!-- 设置所有包中的类都记录trace级别以上的日志信息 -->
53 <Root level="trace">
54 <!-- 输出日志的目的地 -->
55 <AppenderRef ref="File" />
56 </Root>
57 </Loggers>
58 </Configuration>
注:
<logger name="log4jtutorial" level="info" additivity="false">
name="log4jtutorial":因为我们需要配置log4jtutorial包中的类输出info级别以上的日志,因此name需要赋值相对应的包名log4jtutorial。
level="info":表示只输出info级别以上的日志。additivity="false":因为<Root level="trace"><AppenderRef ref="File" /></Root>设置的是针对于全部包输出的日志级别,如果
additivity不设置为flase,那么log4jtutorial包中的类日志信息会输出2次。
3、打印日志信息类
log4jtutorial包中的类
1 package log4jtutorial;
2
3 import org.apache.logging.log4j.LogManager;
4 import org.apache.logging.log4j.Logger;
5
6 public class LoggingFile {
7
8 private static final Logger log = LogManager.getLogger(LoggingFile.class.getName());
9 public static void main(String[] args) {
10
11 log.trace("Trace message logged");
12 log.debug("Debug message logged");
13 log.info("Info message logged");
14 log.error("Error message logged");
15 log.fatal("Fatal message logged");
16 }
17 }
log4j包中的类
package log4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LoggingDemo {
// 首先需要定义一个log对象
// 定义成static final是因为只需要这一个实例,不能再有子类,多次调用的都是这一个实例,所以我们可以一直用这个对象来记录日志,不需要创建新的对象。
// .getLogger()方法返回的是一个Logger对象实例
// 括号里面的参数用来记现在所在的类(LoggingDemo.class.getName())
private static final Logger log = LogManager.getLogger(LoggingDemo.class.getName());
public static void main(String[] args) {
log.trace("Trace message logged");
log.debug("Debug message logged");
log.info("Info message logged");
log.error("Error message logged");
log.fatal("Fatal message logged");
}
}
4、日志输出信息
log4jtutorial包中的类日志输出信息

log4j包中的类日志输出信息

二、如何将log4j应用到测试用例中
1 package log4jtutorial;
2
3 import static org.junit.jupiter.api.Assertions.*;
4
5 import java.util.concurrent.TimeUnit;
6
7 import org.apache.logging.log4j.LogManager;
8 import org.apache.logging.log4j.Logger;
9 import org.junit.jupiter.api.AfterEach;
10 import org.junit.jupiter.api.BeforeEach;
11 import org.junit.jupiter.api.Test;
12 import org.openqa.selenium.WebDriver;
13 import org.openqa.selenium.chrome.ChromeDriver;
14
15 class TestNG_TestCase {
16
17 private WebDriver driver;
18 private String url;
19 // 声明一个log对象
20 private static final Logger log = LogManager.getLogger(TestNG_TestCase.class.getName());
21
22 @BeforeEach
23 void setUp() throws Exception {
24 driver = new ChromeDriver();
25 url = "https://www.baidu.com";
26 driver.manage().window().maximize();
27 driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
28 // 列如我们需要在打开浏览器最大化之后记录log,那么我们就在此处设置log记录代码
29 log.info("浏览器最大化 ");
30 }
31
32 @Test
33 void test() {
34 driver.get(url);
35 log.info("打开网站");
36 }
37
38 @AfterEach
39 void tearDown() throws Exception {
40 Thread.sleep(2000);
41 driver.quit();
42 }
43 }
打印结果:

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。
内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。
欢迎关注,转载请注明来源。