zoukankan      html  css  js  c++  java
  • 章节十五、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-%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基础开始。

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

  • 相关阅读:
    RabbitMQ安全相关的网络资源介绍
    种植玉米,发酵与生物燃料的制作
    一致哈希算法Java实现
    添加xml文件编辑语法提示
    【转】10分钟搭建NDK的Android开发环境
    【转】Windows环境下Android NDK环境搭建
    【转】蓝牙4.0——Android BLE开发官方文档翻译
    【转】java提高篇(十)-----详解匿名内部类
    【转】Android自定义View的实现方法,带你一步步深入了解View(四)
    【转】java枚举类型enum的使用
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/11353909.html
Copyright © 2011-2022 走看看