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

1、针对不同的包来记录不同级别的日志信息

2、在日志xml配置文件中加入配置信息(红色标注)

 <?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- 将log信息记录到指定文件夹中 -->
<!-- “.”表示当前路径, ./logs表示将log信息存放到该项目的logs文件夹中 -->
<Properties>
<Property name="basePath">./logs</Property>
</Properties>
<!-- appenders表示日志输出的位置 -->
<Appenders>
<!-- 给记录日志的文件命名 -->
<RollingFile
name="File"
fileName="${basePath}/app.log"
filePattern="${basePath}/app-%d{yyyy-MM-dd}.log">
<!-- 设置输出的log信息格式 -->
<PatternLayout
pattern="%d{HH:mm:ss.SSS} %-5level %c{2} -%msg%n" />
<Policies>
<!-- 基于时间触发生成文件的策略 -->
<!-- interval="1"表示每隔一天就会创建新的日志文件 -->
<TimeBasedTriggeringPolicy
interval="1"
modulate="true" />
<!-- 基于大小触发生成文件的策略 -->
<SizeBasedTriggeringPolicy size="100 KB" />
</Policies>
</RollingFile>
<!-- 表示在控制台上输出信息 -->
<Console name="Console">
<!-- 设置输出的log信息格式 -->
<PatternLayout
pattern="%d{HH:mm:ss.SSS} %-5level %c{2} -%msg%n" />
</Console>
</Appenders>
<Loggers>
<!-- 从不同的包中记录不同级别的日志信息 -->
<!-- 设置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>
<!-- 定义级别 -->
<!-- 设置所有包中的类都记录trace级别以上的日志信息 -->
<Root level="trace">
<!-- 输出日志的目的地 -->
<AppenderRef ref="File" />
</Root>
</Loggers>
</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包中的类
 package log4jtutorial;

 import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; public class LoggingFile { private static final Logger log = LogManager.getLogger(LoggingFile.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");
}
}

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应用到测试用例中

 package log4jtutorial;

 import static org.junit.jupiter.api.Assertions.*;

 import java.util.concurrent.TimeUnit;

 import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; class TestNG_TestCase { private WebDriver driver;
private String url;
// 声明一个log对象
private static final Logger log = LogManager.getLogger(TestNG_TestCase.class.getName()); @BeforeEach
void setUp() throws Exception {
driver = new ChromeDriver();
url = "https://www.baidu.com";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(2000, TimeUnit.SECONDS);
// 列如我们需要在打开浏览器最大化之后记录log,那么我们就在此处设置log记录代码
log.info("浏览器最大化 ");
} @Test
void test() {
driver.get(url);
log.info("打开网站");
} @AfterEach
void tearDown() throws Exception {
Thread.sleep(2000);
driver.quit();
}
}

打印结果:

如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。

内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。

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

章节十五、9-自定义Loggers的更多相关文章

  1. Struts(二十五):自定义验证器

    编程验证 Struts2提供了一个Validateable接口,可以使用Action类实现这个接口以提供编程验证: ActionSupport类已经实现了Validateable接口. public ...

  2. Dynamic CRM 2013学习笔记(三十五)自定义审批流6 - 审批通过后,再审批 - 二次审批

    最近有个特殊的需求,客户想做二次审批,就是审批通过后,再走一次审批流程.最开始一想,这还不简单,审批通过后,直接把状态改成draft就完了,后来一试,发现一堆问题,比如第一次审批完后,界面是不允许修改 ...

  3. 章节十五、5-记录日志---Log4j

    一.为什么要用Log4j记录日志? 日志记录对于任何应用程序都非常重要. 它可以帮助我们快速调试代码,通过收集代码执行的信息让代码容易维护. 二.Log4j 是什么? Apache为Java提供的日志 ...

  4. 章节十五、7- 配置文件-Console Logging

    一.创建xml文件 1.创建xml文件 在项目中我们需要专门建一个文件夹来放xml文件或者是其它文件. 2.然后对文件夹进行命名 3.选择new  其它 4.选择XML File 5.给xml文件命名 ...

  5. 章节十五、8-配置文件File Logging

    一.如何将log输出到文件中? 1.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <Confi ...

  6. 章节十五、3-对象仓库、Page Factory实例应用

    一.如何创建对象仓库 package pageclasses; import org.openqa.selenium.WebDriver; import org.openqa.selenium.Web ...

  7. 章节十五、6-log4 2-用默认的配置

    一.实例演示 package log4jtutorial; import org.apache.logging.log4j.LogManager; import org.apache.logging. ...

  8. 章节十五、2-PageObjectModel

    一.在实现自动化过程中,会有很多重复的代码,我们在维护代码时会很困难,如果想解决这个问题,我们就需要使用PageObjectModel(页面对象模型)的方式来进行自动化代码的书写. 二.案例演示 以该 ...

  9. Ionic3学习笔记(十五)自定义 tab icon

    本文为原创文章,转载请标明出处 美工做了一套 icon,自然是要用的.将 icon copy 到 assets 文件夹下. 例如 .icon-ios-home-custom 为 iOS icon 选中 ...

随机推荐

  1. 对scanner.close方法的误解以及无法补救的错误

    scanner错误关闭导致的异常 public class test2 { public static void main(String[] args) { Scanner scanner1 = ne ...

  2. python通过TimedRotatingFileHandler按时间切割日志

    通过TimedRotatingFileHandler按时间切割日志 线上跑了一个定时脚本,每天生成的日志文件都写在了一个文件中.但是日志信息不可能输出到单一的一个文件中. 原因有二:1.日志文件越来越 ...

  3. [POJ2942]Knights of the Round Table(点双+二分图判定——染色法)

    建补图,是两个不仇恨的骑士连边,如果有环,则可以凑成一桌和谐的打麻将 不能直接缩点,因为直接缩点求的是连通分量,点双缩点只是把环缩起来 普通缩点                             ...

  4. CMinpack使用介绍

    github: https://github.com/devernay/cminpack 主页: http://devernay.github.io/cminpack/ 使用手册: http://de ...

  5. linux应用程序设计--GDB调试

    GDB简介:GDB是GNU发布的一款功能强大的程序调试工具,GDB主要完成下面三个方面功能: 一.GDB的使用操作 1.启动被调试程序. 2.让被调试的程序在指定的位置停住. 3.当程序被停住时,可以 ...

  6. Java编程思想:压缩

    import java.io.*; import java.util.Enumeration; import java.util.zip.*; public class Test { public s ...

  7. MySQL5.7.20源码安装以及pt-query-digest用法示例

    MySQL5.7.20源码安装1.下载解压cd /data/app/mysql5.7wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5 ...

  8. UVA816 Abbott的复仇 Abbott's Revenge

    以此纪念一道用四天时间完结的题 敲了好几次代码的出错点:(以下均为正确做法) memset初始化 真正的出发位置必须找出. 转换东西南北的数组要从0开始. bfs没有初始化第一个d 是否到达要在刚刚取 ...

  9. UVA1103 古代象形符号 Ancient Messages 题解

    题目链接: https://www.luogu.org/problemnew/show/UVA1103 题目分析: 我们可以先进行矩阵的还原 for(int k=1;k<=4;k++) { a[ ...

  10. Tomcat(Windows)

    百度云:链接:http://pan.baidu.com/s/1pKYrf79    密码:56t0 官网下载网址:http://archive.apache.org/dist/tomcat/tomca ...