Log4j2测试案例
Posted IT运维世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j2测试案例相关的知识,希望对你有一定的参考价值。
1. 安装JDK1.8.0_92版本
上传软件包到/opt/jdk-8u92
2. 解压缩
[root@prcist1mydb1d10 jdk-8u92]# tar zxvf jdk-8u92-linux-x64.gz |
3. 设置环境变量:
root@prcist1mydb1d10 profile.d]# vi /etc/profile.d/java.sh export JAVA_HOME=/opt/jdk-8u92/jdk1.8.0_92 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH |
4. 下载mysql-connector,解压缩,将mysql-connector-java-5.1.46.jar和mysql-connector-java-5.1.46-bin.jar拷贝到/opt/jdk-8u92/jdk1.8.0_92/lib下。
5. 下载apache-log4j-2.11版本(当前最新版本),解压缩后,将log4j-api-2.11.0.jar和log4j-core-2.11.0.jar拷贝到/opt/jdk-8u92/jdk1.8.0_92/lib/下
6. 测试连接mysql数据库的程序:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; public class ConnectToDataBase { public static void main(String[] args){ Logger logger=LogManager.getLogger(ConnectToDataBase.class.getName()); String driver="com.mysql.jdbc.Driver"; String url="jdbc:mysql://localhost:3306/test"; String user="root"; String password="Test!1234";
// 加载驱动程序 try { Class.forName(driver); //System.out.println("驱动程序加载成功"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
//链接数据库 Connection conn=null; try { conn=DriverManager.getConnection(url, user, password); if (!conn.isClosed()) { System.out.println("连接数据库成功"); logger.info("This is an info"); } } catch (SQLException e) { System.out.println("链接数据库失败: "+e.getMessage()); } }
} |
7. 编译后测试程序OK.但是目前没有输出。
8. 设置log4j配置文件。先配置个简单的,在$CLASSPATH环境变量配置的路径下,创建log4j2.xml,配置文件如下,配置将日志信息输出到console:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </appenders> <loggers> <root level="trace"> <appender-ref ref="Console"/> </root> </loggers> </configuration> |
9. 测试执行程序,日志输出正常。
10. 在程序同目录下,创建log4j2-test.xml,配置文件如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="error"> <!-- 先定义所有的appender --> <appenders> <!-- 这个输出控制台的配置 --> <Console name="Console" target="SYSTEM_OUT"> <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 这个都知道是输出日志的格式 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </Console>
<!-- 文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 --> <!-- append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true --> <File name="log" fileName="log/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/> </File>
<!-- 添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别 onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝 --> <File name="ERROR" fileName="logs/error.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> </File>
<!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --> <RollingFile name="RollingFile" fileName="logs/web.log" filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> <SizeBasedTriggeringPolicy size="2MB"/> </RollingFile> </appenders>
<!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 --> <loggers> <!-- 建立一个默认的root的logger --> <root level="trace"> <appender-ref ref="RollingFile"/> <appender-ref ref="Console"/> <appender-ref ref="ERROR" /> <appender-ref ref="log"/> </root>
</loggers> </configuration>
|
11. 执行程序,可以看到执行结果如下:
[root@prcist1mydb1d10 java_project]# java ConnectToDataBase Sat Jun 23 04:25:23 PDT 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 连接数据库成功 04:25:24.168 INFO ConnectToDataBase 28 main - This is an info [root@prcist1mydb1d10 java_project]# ls -al log 总用量 4 drwxr-xr-x 2 root root 22 Jun 23 04:13 . drwxr-xr-x 4 root root 168 Jun 23 04:17 .. -rw-r--r-- 1 root root 63 Jun 23 04:25 test.log [root@prcist1mydb1d10 java_project]# ls -al logs 总用量 4 drwxr-xr-x 2 root root 38 Jun 23 04:13 . drwxr-xr-x 4 root root 168 Jun 23 04:17 .. -rw-r--r-- 1 root root 0 Jun 23 04:13 error.log -rw-r--r-- 1 root root 154 Jun 23 04:25 web.log |
以上是关于Log4j2测试案例的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
SpringBoot2.0 基础案例(02):配置Log4j2,实现不同环境日志打印
Java日志框架 -- log4j2(入门案例Slf4j + Log4j2log4j2异步日志无垃圾记录)
Java日志框架 -- log4j2(入门案例Slf4j + Log4j2log4j2异步日志无垃圾记录)