章节十五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的主要内容,如果未能解决你的问题,请参考以下文章