章节十五9-自定义Loggers

Posted luohuasheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了章节十五9-自定义Loggers相关的知识,希望对你有一定的参考价值。

一、如何给不同的包设置不同的日志级别?

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-%dyyyy-MM-dd.log">
15             <!-- 设置输出的log信息格式 -->
16             <PatternLayout
17                 pattern="%dHH:mm:ss.SSS %-5level %c2 -%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="%dHH:mm:ss.SSS %-5level %c2 -%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基础开始。

欢迎关注,转载请注明来源。

以上是关于章节十五9-自定义Loggers的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot | 第二十五章:日志管理之自定义Appender

大数据必学Java基础(八十五):自定义注解

Qt系列文章之三十五 (自定义组件)

Qt系列文章之三十五 (自定义组件)

第六十五篇iOS7自定义转场动画

十五SAP自定义结构体