Beispiel für ein Java-Projektprotokoll: Log4j2

Klicken Sie unten, um mir zu folgen, und klicken Sie dann oben rechts auf „Als Stern festlegen“, um so schnell wie möglich Updates zu erhalten~~~

Apache Log4j 2 ist ein Upgrade auf Log4j. Es weist erhebliche Verbesserungen gegenüber seinem Vorgänger Log4j 1.x auf und bietet viele in Logback verfügbare Verbesserungen. Es unterstützt außerdem JCL und SLF4J.

1

Beispiele für die Verwendung von Log4j2

f1bd86dd56afa3d0a2069bd608cebe6a.png

1. Wählen Sie das JAR-Paket aus

Stellen Sie die erforderlichen Pakete für Log4j2 vor: log4j-api, log4j-core.

2. pom.xml-Konfiguration

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


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

3. log2j-Konfigurationsdatei: log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- status用来指定Log4j本身的打印日志的级别 -->
<!--monitorInterval:Log4j能够自动检测修改配置文件和重新配置本身,设置间隔秒数 -->
<configuration status="WARN" monitorInterval="30">
    <!--先定义所有的appender -->
    <appenders>
        <!--这个输出控制台的配置 -->
        <console name="Console" target="SYSTEM_OUT">
            <!--输出日志的格式 -->
            <PatternLayout
                pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" />
        </console>


        <!--定义输出到指定位置的文件 -->
        <File name="log" fileName="/jpm/log4j2/logs/log.log" append="true">
            <PatternLayout
                pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" />
        </File>


        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
        <RollingFile name="RollingFileInfo" fileName="/jpm/log4j2/logs/info.log"
            filePattern="/jpm/log4j2/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
            <ThresholdFilter level="info" onMatch="ACCEPT"
                onMismatch="DENY" />
            <PatternLayout
                pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了30 -->
            <DefaultRolloverStrategy max="30" />
        </RollingFile>


        <RollingFile name="RollingFileError" fileName="/jpm/log4j2/logs/error.log"
            filePattern="/jpm/log4j2/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="error" onMatch="ACCEPT"
                onMismatch="DENY" />
            <PatternLayout
                pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %logger{36} - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="100 MB" />
            </Policies>
        </RollingFile>
    </appenders>


    <!--只有定义了logger并引入的appender,appender才会生效 -->
    <loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息 -->
        <logger name="org.springframework" level="INFO"></logger>
        <logger name="org.mybatis" level="INFO"></logger>
        <root level="INFO">
            <appender-ref ref="Console" />
            <appender-ref ref="log" />
            <appender-ref ref="RollingFileInfo" />
            <appender-ref ref="RollingFileError" />
        </root>
    </loggers>


</configuration>

4. Codebeispiel zur Ausgabe von Protokollen

package jpm.log4j2;    
import org.apache.logging.log4j.LogManager;    
import org.apache.logging.log4j.Logger;    
public class TestLog4j2 {        
public static void main(String[] args) {            
    final Logger LOGGER = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
    LOGGER.debug("TestLog4j2 debug log.");
    LOGGER.info("TestLog4j2 info log.");
    LOGGER.error("TestLog4j2 error log.");
  }
}

5. Protokollergebnisse ausdrucken

e0dd0d2a17090f76f7a0bebc13cee582.png

75ceab254dfc09fea711345fcb66bf62.jpeg

2

Informationen zur Protokollebene

4b0451fac21c1ac353b3918bd450b0a9.png

Insgesamt gibt es 8 Protokollebenen, von niedrig bis hoch: Alle < Trace < Debug < Info < Warn < Fehler < Schwerwiegend < AUS.

Alle: Die niedrigste Ebene, mit der die gesamte Protokollierung aktiviert wird

Trace: Es handelt sich um Tracking, das heißt, wenn das Programm weiter unten voranschreitet, können Sie eine Trace-Ausgabe schreiben, sodass es viele Traces geben sollte, aber das spielt keine Rolle, wir können die minimale Protokollebene festlegen, um die Ausgabe zu verhindern

Debuggen: Das Aufzeigen feinkörniger Informationsereignisse ist beim Debuggen von Anwendungen sehr hilfreich

Info: Meldungen heben den laufenden Prozess der Anwendung auf einer grobkörnigen Ebene hervor

Warnen: Warnungen und Protokolle mit Stufen unterhalb von Warnung ausgeben

Fehler: Fehlermeldungsprotokoll ausgeben

Schwerwiegend: Gibt ein Protokoll jedes schwerwiegenden Fehlerereignisses aus, das zum Beenden der Anwendung führt.

AUS: Die höchste Stufe, mit der die gesamte Protokollierung ausgeschaltet wird

Das Programm druckt Protokolle, die höher oder gleich der eingestellten Stufe sind. Je höher die Protokollstufe eingestellt ist, desto weniger Protokolle werden gedruckt.

Später werden wir Beispiele für die Verwendung von JCL (Java Common Logging) und SLF4J im Projekt zusammen mit Log4j vorstellen.

Supongo que te gusta

Origin blog.csdn.net/z123456789XDW/article/details/132387037
Recomendado
Clasificación