log4j2入門hello world

1.什麼是log4j2

(1)log4j

log4j是apache的一個開源項目,表示log for java.是一個日誌工具,能夠將日誌信息輸出到文件,控制檯等其餘地方 ,還能夠定義日誌的輸出格式,另外還有日誌級別的區分,可經過配置文件去配置輸出格式,輸出目的地等信息.html

(2)log4j2

log4j2從名字就知道了,是log4j的升級版本,性能有了很大提高,增長了不少新特性(如自定義級別,lambda表達式)與新的API,直接與tomcat等服務器集成.java

3.VScode下使用log4j2(不用Maven

(1)準備jar包

點擊這裏下載web

在這裏插入圖片描述

做者用的是win10,下載zip.apache

(2)準備插件

搜索安裝:Eclipse New Java Projectjson

在這裏插入圖片描述

(3)建立項目

ctrl+shift+p調出命令面板,輸入new java projectapi

在這裏插入圖片描述

項目名tomcat

在這裏插入圖片描述

JavaSE版本服務器

在這裏插入圖片描述

建立完畢.app

在這裏插入圖片描述

(4)設置jar包路徑

在項目根路徑下新建lib文件夾,把下載的maven

在這裏插入圖片描述

這兩個jar包放進去. 下一步設置.classpath. 添加

<classpathentry kind="lib" path="lib/log4j-api-2.12.1.jar" />
<classpathentry kind="lib" path="lib/log4j-core-2.12.1.jar" />

(5)新建測試文件

src下直接創建test.java

test.java:

import org.apache.logging.log4j.*;

public class test
{
    private final static Logger logger = LogManager.getLogger(test.class.getName());
    public static void main(String[] args) {
        logger.info("info");
        logger.error("error");
        logger.debug("debug");
        logger.trace("trace");
        logger.fatal("fatel");
    }
}

(6)運行

點擊main上的Run 在這裏插入圖片描述

結果:

在這裏插入圖片描述

輸出了fatel與error信息. 另外還提示了沒有找到log4j2配置文件,使用默認的配置文件,默認輸出到控制檯.

(7)建立配置文件使其輸出更多信息

src下建立log4j2.xml配置文件.

在這裏插入圖片描述

log4j2的配置文件只能是.xml或.json或.jsn文件,默認會在classpath下尋找(在這裏classpath至關於圖中的src). 默認狀況下系統選擇配置文件的優先級以下:

  • 1.classpath下名爲 log4j-test.json 或者log4j-test.jsn文件
  • 2.classpath下名爲 log4j2-test.xml
  • 3.classpath下名爲 log4j.json 或者log4j.jsn文件
  • 4.classpath下名爲 log4j2.xml

這裏使用log4j2. xml.log4j2.xml以下:

<?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>    
    <logger name="test" level="info" additivity="false">    
      <appender-ref ref="Console"/>    
    </logger>    
    <root level="info">    
      <appender-ref ref="Console"/>    
    </root>    
  </loggers>    
</configuration>

Logger三個主要的組件爲

  • logger(記錄器)
  • appender(輸出目的地)
  • layout(佈局,定義日誌的格式)

<appenders>了輸出目的地,<Console>表示控制檯,<PatternLayout>定義了佈局,裏面的佈局表示時間格式(%d,HH:mm:ss.SSS),接着是日誌線程名(%t),%-5表示最小長度爲5左對齊,level表示輸出日誌級別. %logger表示輸出logger名稱. %m是%msg與%message的縮寫,表示輸出應用提供的與記錄事件有關的信息. %n表示換行.

<loggers>定義的logger與logger使用的appender.root爲log默認的輸出形式,若是一個類的沒有明確loggers中的輸出格式就會採用root的格式.

(8)再次運行

沒有以前的"沒有配置文件"的提示了. 在這裏插入圖片描述

4.VScode下使用log4j2(帶Maven)

(1)建立maven項目

使用插件maven for java建立,命令面板(ctrl+shift+p)輸入.

在這裏插入圖片描述

選擇quickstart.

在這裏插入圖片描述

選擇版本.

在這裏插入圖片描述

最後選擇項目路徑便可. 在控制檯中vscode會下載相關文件,而後會提示以交互模式建立:

在這裏插入圖片描述

這裏等一會就行了. 而後會提示輸入一些值.

在這裏插入圖片描述

在這裏插入圖片描述

ok.

(2)在pom.xml配置依賴

在<dependencies>中添加以下代碼:

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.12.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.12.1</version>
</dependency>

如下是完整的pom.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>test</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
    </dependencies>


    <build>
        <pluginManagement>
            <!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

右鍵選擇Update project configuration.

在這裏插入圖片描述

(3)建立log4j2.xml

在java目錄下新建log4j2.xml.

在這裏插入圖片描述

<?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>
        <logger name="com.example.App" level="info" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
        <root level="info">
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

(4)修改測試類

修改默認的App.java.

package com.example;
import org.apache.logging.log4j.*;
public class App
{
    private static final Logger logger = LogManager.getLogger(App.class.getName());
    public static void main( String[] args )
    {
        logger.info("info");
        logger.error("error");
        logger.debug("debug");
        logger.trace("trace");
        logger.fatal("fatel");
    }
}

(5)測試

run便可.

在這裏插入圖片描述

在這裏插入圖片描述

5.IDEA下使用log4j2(不用Maven)

(1)建立項目

什麼也不用選,直接next.

在這裏插入圖片描述

勾選從模板建立項目.

在這裏插入圖片描述

選好路徑與填好項目名便可.

(2)添加jar包

在這裏插入圖片描述

選擇剛纔的lib目錄,或者本身手動改爲兩個jar包(log4j-api-版本.jar,log4j-core-版本.jar).

在這裏插入圖片描述

(3)新建測試類

項目結構以下:

在這裏插入圖片描述

Main.java

package com.test;
import org.apache.logging.log4j.*;

public class Main {

    private static final Logger logger = LogManager.getLogger(Main.class.getName());
    public static void main(String[] args) {
        logger.info("info");
        logger.error("error");
        logger.debug("debug");
        logger.trace("trace");
        logger.fatal("fatel");
    }
}

(4)新建log4j2.xml

在src下新建log4j2.xml.

<?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>
        <logger name="com.test.Main" level="info" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
        <root level="info">
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

(5)測試

直接點擊run按鈕.

在這裏插入圖片描述

6.IDEA下使用log4j2(帶Maven)

(1)建立maven項目 模塊

這裏做者偷懶就直接在上面項目的基礎上新建模塊不新建項目了.

在這裏插入圖片描述

都不用選直接next.

在這裏插入圖片描述

填好GroupId與ArtifactId以後next.

在這裏插入圖片描述

最後選好位置.

(2)配置依賴

pom.xml中加入:

<dependencies>
	<dependency>
		<groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.12.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.12.1</version>
    </dependency>
</dependencies>

如下是完整的pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.12.1</version>
        </dependency>
    </dependencies>

</project>

右鍵選擇同步pom.xml.

在這裏插入圖片描述

選擇右下角彈出的提示中的Import Changes.

在這裏插入圖片描述

(3)建立log4j2.xml

在target下的classes下建立log4j2.xml.

在這裏插入圖片描述

log4j2.xml:

<?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>
        <logger name="com.example.test" level="info" additivity="false">
            <appender-ref ref="Console"/>
        </logger>
        <root level="info">
            <appender-ref ref="Console"/>
        </root>
    </loggers>
</configuration>

(4)建立測試類

建立包與test.java.

test.java

package com.example;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class test {
    private static final Logger logger = LogManager.getLogger(test.class.getName());
    public static void main(String[] args) {
        logger.info("info");
        logger.error("error");
        logger.debug("debug");
        logger.trace("trace");
        logger.fatal("fatel");
    }
}

(5)測試

新建配置Application.

在這裏插入圖片描述

輸入Main class與名字.

在這裏插入圖片描述

run.

在這裏插入圖片描述

7.最後

這篇文章主要寫了log4j2的入門級別的使用.如下是做者的公衆號,歡迎關注.

在這裏插入圖片描述

參考: 1.log4j2(1)

2.log4j2(2)

3.log4j2(3)

4.log4j2(4)

5.log4j2(5)

相關文章
相關標籤/搜索