码迷,mamicode.com
首页 > 其他好文 > 详细

章节十五、9-自定义Loggers

时间:2019-08-16 18:33:27      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:trigger   filename   gpo   路径   rac   pattern   关注   ack   open   

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

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基础开始。

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

章节十五、9-自定义Loggers

标签:trigger   filename   gpo   路径   rac   pattern   关注   ack   open   

原文地址:https://www.cnblogs.com/luohuasheng/p/11353909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!