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.jarmysql-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.jarlog4j-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属性决定,这个也挺有用的,适合临时测试用 -->

<!--         appendTRUE表示消息增加到指定文件中,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并引入的appenderappender才会生效 -->

     <loggers>

<!--         建立一个默认的rootlogger -->

         <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异步日志无垃圾记录)

Java日志框架 -- log4j2(入门案例Slf4j + Log4j2log4j2异步日志无垃圾记录)

DevOps案例 | 云测试应用案例