溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

log4j2入門hello world

發(fā)布時(shí)間:2020-03-24 08:09:55 來源:網(wǎng)絡(luò) 閱讀:338 作者:2578612215 欄目:編程語言

1.什么是log4j2

(1)log4j

log4j是apache的一個(gè)開源項(xiàng)目,表示log for java.是一個(gè)日志工具,可以將日志信息輸出到文件,控制臺等其他地方 ,還可以定義日志的輸出格式,另外還有日志級別的區(qū)分,可通過配置文件去配置輸出格式,輸出目的地等信息.

(2)log4j2

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

3.VScode下使用log4j2(不用Maven)

(1)準(zhǔn)備jar包

點(diǎn)擊這里下載
log4j2入門hello world
作者用的是win10,下載zip.

(2)準(zhǔn)備插件

搜索安裝:Eclipse New Java Project
log4j2入門hello world

(3)創(chuàng)建項(xiàng)目

ctrl+shift+p調(diào)出命令面板,輸入new java project
log4j2入門hello world
項(xiàng)目名
log4j2入門hello world

JavaSE版本
log4j2入門hello world
創(chuàng)建完畢.
log4j2入門hello world

(4)設(shè)置jar包路徑

在項(xiàng)目根路徑下新建lib文件夾,把下載的
log4j2入門hello world
這兩個(gè)jar包放進(jìn)去.
下一步設(shè)置.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)運(yùn)行

點(diǎn)擊main上的Run
log4j2入門hello world

結(jié)果:
log4j2入門hello world
輸出了fatel與error信息.
另外還提示了沒有找到log4j2配置文件,使用默認(rèn)的配置文件,默認(rèn)輸出到控制臺.

(7)創(chuàng)建配置文件使其輸出更多信息

src下創(chuàng)建log4j2.xml配置文件.
log4j2入門hello world
log4j2的配置文件只能是.xml或.json或.jsn文件,默認(rèn)會在classpath下尋找(在這里classpath相當(dāng)于圖中的src).
默認(rèn)情況下系統(tǒng)選擇配置文件的優(yōu)先級如下:

  • 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三個(gè)主要的組件為

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

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

<loggers>定義的logger與logger使用的appender.root為log默認(rèn)的輸出形式,如果一個(gè)類的沒有明確loggers中的輸出格式就會采用root的格式.

(8)再次運(yùn)行

沒有之前的"沒有配置文件"的提示了.
log4j2入門hello world

4.VScode下使用log4j2(帶Maven)

(1)創(chuàng)建maven項(xiàng)目

使用插件maven for java創(chuàng)建,命令面板(ctrl+shift+p)輸入.
log4j2入門hello world
選擇quickstart.
log4j2入門hello world
選擇版本.
log4j2入門hello world
最后選擇項(xiàng)目路徑即可.
在控制臺中vscode會下載相關(guān)文件,然后會提示以交互模式創(chuàng)建:
log4j2入門hello world
這里等一會就好了.
然后會提示輸入一些值.
log4j2入門hello world
log4j2入門hello world
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.
log4j2入門hello world

(3)創(chuàng)建log4j2.xml

在java目錄下新建log4j2.xml.
log4j2入門hello world

<?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)修改測試類

修改默認(rèn)的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即可.
log4j2入門hello world
log4j2入門hello world

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

(1)創(chuàng)建項(xiàng)目

什么也不用選,直接next.
log4j2入門hello world
勾選從模板創(chuàng)建項(xiàng)目.
log4j2入門hello world
選好路徑與填好項(xiàng)目名即可.

(2)添加jar包

log4j2入門hello world
選擇剛才的lib目錄,或者自己手動(dòng)改成兩個(gè)jar包(log4j-api-版本.jar,log4j-core-版本.jar).
log4j2入門hello world

(3)新建測試類

項(xiàng)目結(jié)構(gòu)如下:
log4j2入門hello world
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)測試

直接點(diǎn)擊run按鈕.
log4j2入門hello world

6.IDEA下使用log4j2(帶Maven)

(1)創(chuàng)建maven項(xiàng)目 模塊

這里作者偷懶就直接在上面項(xiàng)目的基礎(chǔ)上新建模塊不新建項(xiàng)目了.
log4j2入門hello world

都不用選直接next.
log4j2入門hello world
填好GroupId與ArtifactId之后next.
log4j2入門hello world
最后選好位置.

(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.
log4j2入門hello world
選擇右下角彈出的提示中的Import Changes.
log4j2入門hello world

(3)創(chuàng)建log4j2.xml

在target下的classes下創(chuàng)建log4j2.xml.
log4j2入門hello world
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)創(chuàng)建測試類

創(chuàng)建包與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.
log4j2入門hello world

輸入Main class與名字.
log4j2入門hello world
run.
log4j2入門hello world

參考:
1.log4j2(1)
2.log4j2(2)
3.log4j2(3)
4.log4j2(4)
5.log4j2(5)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI