使用Log4j2打印执行日志浅析
Log4j2介绍
- Log4j是Apache的一个开放源代码项目,是一个
日志操作包
。通过使用Log4j,可以指定日志信息输出的目的地,控制每一条日志的输出格式,定义日志信息的级别。所有这功能通过一个配置文件灵活进行配置。
环境准备
-
下载zip文件,并解压。下载链接
-
把解压后的
log4j-api-2.17.2.jar
、log4j-core-2.17.2.jar
两个文件,添加到eclipse的buildpath中(可以先建一个libs文件,把这两个文件复制粘贴到该文件夹,并右键build path),效果如图显示:
功能介绍
xml文件基本内容
默认从error级别开始打印,例如:
package cmo.xhx.demo;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.annotations.Test;
public class Demo1 {
private static final Logger LOG = LogManager.getLogger();
String msg = "-----hello";
@Test
public void test1() {
LOG.trace("trace" + msg); // 最低级别,通常不会使用
LOG.debug("debug" + msg);// 开发环境上用
LOG.info("info" + msg);// 线上、生产环境上用
LOG.warn("warn" + msg);
LOG.error("error" + msg);
LOG.fatal("fatal" + msg); // 最高级别
}
}
留下一个链接,上面有更多log4j的资料
https://github.com/apache/logging-log4j2/blob/release-2.x/README.md
我们在src下建一个xml文件,文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_ERROR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="cmo.xhx.demo" level="INFO"/>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
PatternLayout
中可设置相应的输出格式。
console中的
name应与AppenderRef
中的一致。
Logger
中的level值对应从哪一级别开始打印(此文件为从info开始打印)。name值为对应的包名。
效果如下:
注意
- 格式相关信息:(1)%d:打印日志的年月日时分毫秒信息,(2)%c打印类的名称(%level也可), (3)%M:发出日志请求的方法名, (4)%m打印具体的日志信息, (5)%n:输出一个回车换行符。(6)%-5p(左对齐)表示日志的级别,输出优先级(
ALL、TRACE、BEGUB、INFO、WARN、ERROR、FATAL、OFF(从低到高级别)
) <Logger>
的优先级大于Root
的,当没有Logger标签时,默认从root中设计的优先级开始打印。- 例如:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_ERROR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
效果如下:
指定将结果存到一个文件中:
xml文件内容修改为:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_ERROR">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="file" fileName="log/mylog">
<PatternLayout pattern="%d [-%5p] %c - %m%n" />
</File>
</Appenders>
<Loggers>
<Root level="all">
<AppenderRef ref="Console" />
<AppenderRef ref="file" />
</Root>
</Loggers>
</Configuration>
添加了<File>、<AppenderRef>
,修改了格式。效果如下图:
刷新一下,发现多了一个log文件夹,并且其中的一个mylog文件内容如下图所示:
和selenium结合使用
在此仅仅浅浅介绍一下。
如图所示,建立一个conf文件,并在其中建立一个 .properties
文件,其中可以写用到的一些基本数据,如浏览器驱动所在位置,保存截屏的地址等等。
建立一个java文件,用来获取上述文件中的信息。
那么对应的初始化浏览器的java文件,直接通过另一个java类便可获取到信息,完成初始化操作。
提示:静态方法在类实例化之前就可以使用
例如:String browserType = ReadProperties.getValue("browser");