11使用Log4j2打印执行日志
Log4j2是日志操作包
三个重要组件:日志的优先级、日志信息的输出目的地、日志信息的输出格式。
1.Log4j2功能
1.可以指定日志信息输出的目的地
2.控制每一条日志的输出格式
3.定义日志信息的级别
PS:这些功能通过一个配置文件灵活进行配置。
###2.demo1 Logger的简化使用,这种只输出到控制台!
//demo1
//用面向对象的思想思考问题!!!
public class Demo1 {
//1.获取日志记录器
private static final Logger LOGGER=LogManager.getLogger();
String msg="hello";
@Test
public void test1() {
LOGGER.trace("trace:"+msg);
//记录debug级别的信息,般用于细粒度级别上,对调试应用程序非常有帮助。
LOGGER.debug("debug:"+msg);
//记录info级别的信息,info 一般和在粗粒度级别上,强调应用程序的运行全程。
LOGGER.info("info:"+msg);
//warn 表明会出现潜在的错误情形。
LOGGER.warn("warn:"+msg);
//记录error级别的信息,error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
LOGGER.error("11:"+msg);
//指出每个严重的错误事件将会导致应用程序的退出。
LOGGER.fatal("fatal:"+msg);
}
}
//Log4j比如你不想只在控制台查看测试信息,以前可以用InputStream输出到文件中,但是这个Log4J帮实现了,现在直接就实例化就行
//Log4j 就是日志的操作包。
//log4j.properties是第一代版本的,现在不推荐用。
###3.题外话 基于properties配置文件的BaseTest 知识点:Properties 类
//BaseTest
//可以判断是火狐浏览器还是谷歌的
//并且把打开浏览器的类型保存到日志中
public class BaseTest {
public WebDriver driver;
@BeforeClass
public void initBrowser() throws IOException {
//ReadProperties是自己创建的类,详解在下面。
//通过ReadProperties的getValue的方法获得browser的值。
String browser_type=ReadProperties.getValue("browser");
//判断配置文件的browser是不是火狐。
//这里是为了便于修改,在配置文件中就可以实现火狐或者谷歌浏览器的转换。
if(browser_type.equalsIgnoreCase("firefox")) {
//gecko_driver=d:\\demo\\geckodriver.exe
System.setProperty("webdriver.gecko.driver",ReadProperties.getValue("gecko_driver"));
//firefox=C:\\Program Files\\Mozilla Firefox\\firefox.exe
System.setProperty("webdriver.firefox.bin",ReadProperties.getValue("firefox"));
driver=new FirefoxDriver();
Log.info("打开ff浏览器");
}else if(browser_type.equalsIgnoreCase("chrome")) {
//equalsIgnoreCase与equals的区别:前者不考虑大小写。
System.setProperty("webdriver.chrome.driver",
ReadProperties.getValue("chrome_driver"));
driver=new ChromeDriver();
Log.info("打开chrome浏览器");
}
}
//在这个Test方法中实现了对报错日志的记录。
@Test
public void testMymovie() {
try {
//通过ReadProperties这个类的getValue获取键值对左侧名为base_url方法
driver.get(ReadProperties.getValue("base_url"));
driver.findElement(By.name("username")).sendKeys("admin");
} catch (Exception e) {
//如果报错,输出error级别的报错信息。
//Log类的error方法。
Log.error(e.getMessage());
}
}
}
4.Properties 类
Properties 类位于 java.util.Properties ,是Java 语言的配置文件所使用的类 ,它使用
键值结构
存储数据, 属性列表中每个键及其对应值都是一个
字符串
。
这个类的常用方法
load:从字节输入流中读取
键值对
。利用InputStream对象,实现对文件的链接,
什么是键值对?
例如:filename = 666.txt。
//常用方法 小部分源代码
public void load(InputStream inStream);
public class ReadProperties {
//这个是与src并列的就是在项目文件下设置的文件夹conf,conf/config.properties就是该文件。
public static final String filePath="conf/config.properties";
public static String getValue(String key) throws IOException {
//是Java 语言的配置文件所使用的类
Properties prop=new Properties();
//把config.properties引入进来。这里用InputStream是因为load方法是从InputStream对象中读取信息。
FileInputStream fis=new FileInputStream(filePath);
//实现了文件的引入
prop.load(fis);
//关闭文件输入流
fis.close();
//java.util.Properties.getProperty(String key,String defaultValue)
//getProperty方法。
//在属性列表中指定键的属性的方法搜索
return prop.getProperty(key);
}
}
conf/config.properties 根据自己的文件路径输入
browser=chrome
gecko_driver=d:\\demo\\geckodriver.exe
chrome_driver=d:\\demo\\chromedriver.exe
firefox=C:\\Program Files\\Mozilla Firefox\\firefox.exe
base_url=http://localhost:8032/mymovie/
screen=d:\\demo\\screen
5.Log类里的Logger 测试开发的好习惯
注意控制台输出的字体是红色的
//log的好处???
//我认为可以在日志文件中添加信息。
//直接调用Log
public class Log {
private static final Logger LOGGER=LogManager.getLogger();
public static void trace(String msg) {
LOGGER.trace(msg);
}
public static void debug(String msg) {
LOGGER.debug(msg);
}
public static void info(String msg) {
LOGGER.info(msg);
}
public static void warn(String msg) {
LOGGER.warn(msg);
}
public static void error(String msg) {
LOGGER.error(msg);
}
public static void fatal(String msg) {
LOGGER.fatal(msg);
}
}
xml文件放在src下面就可以了;
6.log4j.xml 详解
您也可以不使用配置文件,但是配置文件更加灵活
可以输出到控制台,也可以输出到文件。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<!-- 定义appenders-->
<Appenders>
<!-- 以下定义输出到控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!-- -->
<!--PatternLayout可以灵活地指定布局模式 -->
<!-- %p 输出优先级 -->
<!-- %d 输出日志时间点的日期-->
<!-- %c 输出所属的类目,通常就是所在类的全名-->
<!-- %m 输出代码中的指定日期-->
<!-- %n 换行符-->
<PatternLayout pattern="[%-5p] %d %c - %m%n" />
</Console>
<!-- 输出打印到文件-->
<File name="File" fileName="dist/my.log">
<PatternLayout pattern="[%-5p] %d %c - %m%n" />
</File>
</Appenders>
<Loggers>
<!--配置根logger,level是日志记录的优先级 -->
<!--建议只使用四个级别 优先级从高到低分别是ERROR、WARN、INFO、DEBUG -->
<!-- -->
<Root level="INFO">
<AppenderRef ref="File" />
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
gers>
版权声明:本文为gao1213977085原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。