Wenn das Hintergrundprogramm entwickelt und gestartet wird, werden im Allgemeinen Protokollinformationsdruck und Protokollprotokollaufzeichnung verwendet. Während der Entwicklung kann der Protokollinformationsdruck das Problem schnell finden und uns dabei helfen, sich schnell zu entwickeln. Wenn nach dem Online -Programm ein Fehler oder Fehler auftritt, sind Protokolldatensätze erforderlich, um das Problem zu finden.
Spring Boot kann viele verschiedene Protokollierungssysteme integrieren, unter denen die am häufigsten verwendete Apache -Log4j -Systeme und Log4J 2 eine aktualisierte Version von LOG4J ist, die im Vergleich zu Log4j 1.x viele signifikante Verbesserungen vorgenommen hat. In diesem Blog wird also direkt darüber gesprochen, wie Spring Boot log4j2 integriert und konfiguriert.
1. Paket LOG4J2 importieren
Wenn Sie Gradle verwenden, fügen Sie die folgenden Abhängigkeiten in die Datei "Build.gradle" hinzu. Die Gradle -Methode wird im Beispielcode verwendet.
Abhängigkeiten {// log4j2 kompilieren "org.apache.logging.log4j: log4j-api: 2.8" compile "org.apache.logging.log4j: log4j-core: 2.8" // wird zur Unterstützung von Async Compile 'com.lmax: destrupt: 3.3.6'}Wenn Sie Maven verwenden, fügen Sie die folgenden Abhängigkeiten in die Datei pom.xml hinzu.
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.8</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version> 2.8 </version> </abhängig> <depeaponcy> <gruppe> com.lmax </Groupid> <artifactId> disruptor </artifactId> <version> 3.3.6 </Version> </abhängig> </abhängig
2. Fügen Sie log4j2 -Konfigurationsdatei hinzu
Erstellen Sie die Datei log4j2.xml im Stammverzeichnis der Ressourcenressourcendatei des Projekts und kopieren Sie den folgenden Code in die Datei.
<? xml Version = "1.0" coding = "utf-8"?> <! Es kann nicht eingestellt werden. Wenn es auf Trace eingestellt ist, sehen Sie verschiedene detaillierte Ausgänge in Log4J2. Can be set to OFF (off) or Error (only output error information) --><Configurationstatus="OFF"> <!-- Log file directory and compressed file directory configuration --> <Properties> <Propertyname="fileName">/home/kylin/log/knight/spring_log</Property> <Propertyname="fileGz">/home/kylin/log/knight/spring_log/7z</Property> </Properties> <Appenders> <!-Konfiguration für Ausgabekonsolenprotokolle-> <consolename = "console" target = "system_out"> <!-Konsole gibt nur Informationen auf Ebene und oben (OnMatch) und andere direkte Ablehnungen (OnMisMatch)-> <ThresholderLevel = "Info" Info "Info", "OnMItMatch =" OnMisMatch = "-". <MusterlayoutPattern = " %d {hh: mm: ss.sss} [ %t] %-5Level %Logger {36}- %msg %n"/> </console> <!- Alle Informationen ausdrucken. Jedes Mal, wenn die Größe die Größe überschreitet, wird das Protokoll dieser Größe automatisch in dem Ordner gespeichert, der nach Jahrmonat erstellt und als Archiv komprimiert wird-> <RollingRandomaccessFileName = "InfoFoFile" FileName = "$ {FileName}/Web-info.log" InformateFlush = "False". filePattreN = "$ {Dateigz}/$$ {Datum: yyyy-mm}/app- %d {mm-dd-yjyy}- %I.Web-info.gz"> <musterlayoutpattern = " %d {Yyyyy-Mm-dd 'at' HH: MM: MM: SS Z} [ %T] %· 26 · SS Z} [ %t] ig. %msg%xEx%n"/> <Policies> <TimeBasedTriggeringPolicyinterval="6"modulate="true"/> <SizeBasedTriggeringPolicysize="50 MB"/> </Policies> <Filters> <!-- Record only info and warning level information --> <ThresholdFilterlevel="error"onMatch="DENY"onMismatch="NEUTRAL"/> <ThresholdFilterlevel="info"onMatch="ACCEPT"onMismatch="DENY"/> </Filters> <!-- Specify the maximum number of compressed packets per day, default 7, if it exceeds the previous one, it will overwrite --> <DefaultRolloverStrategymax="50"/> </RollingRandomAccessFile> <!-- Store all error information--> <RollingRandomaccessFileName = "ERRORFILE" Dateiname = "$ {fileName} /web-reformiName <MusterlayoutPattern = " %d {yyyyy-mm-dd 'bei' HH: mm: ss z} [ %t] %-5LEVEL %logger {36} %l %m- %msg %xex %n"/> <Richtlinien> <zeitbasierte TregeringPolicyInterval = "6" moduliert "true". MB "/> </Policies> <Filter> <!-Nur Fehlerebene aufzeichnen-> <ThresholdFilterLevel =" error "onmatch =" accept "onMisMatch =" Deny "/> </filters> <!!-Geben Sie die maximale Anzahl von komprimierten Paketen pro Tag an. </Rollingrandomaccessfile <!-- AsyncRoot - Asynchronous logging - requires support from LMAX Disruptor --> <AsyncRootlevel="info"additivity="false"> <AppenderRefref="console"/> <AppenderRefref="infoFile"/> <AppenderRefref="errorFile"/> </AsyncRoot> </Loggers></Configuration>3.. Schreiben Sie log4j2 Auxiliary Class
Nachdem wir die obige Konfiguration erstellt haben, können wir eine Hilfsklasse schreiben, um es für uns bequemer zu gestalten, log4j2 zu verwenden, um Protokolle aufzunehmen.
Erstellen Sie eine L.Java -Klassendatei im Utils -Paket.
Paket com.spring.log4j2.utils; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger;/*** logger logging zusätzliche Klasse** Erstellt von Kylin am 2017/5/11. */public classl {private statische endgültige Logger logger = logManager.getLogger (); privatel () { / * kann nicht instanziiert werden * / werfen neue nicht unterstützte Operationsexception ("kann nicht instanziiert werden"); } publicStaticLoggergetLogger () {return logger; } publicStaticVoidt (String msg) {logger.trace (msg); } publicStaticVoidd (String msg) {logger.debug (msg); } publicStaticVoidi (String msg) {logger.info (msg); } publicStaticVoidW (String msg) {logger.warn (msg); } publicStaticVoide (String msg) {logger.Error (msg); }}Nach dem Schreiben der Hilfsklasse ist sie sehr einfach zu verwenden und kann leicht über den folgenden Code verwendet werden.
@ControllerPublic classWebController {@RequestMapping ("/") publicStringIndex () {String msg = "Konfiguration und Verwendung von log4j2 in Spring Boot -Serie"; LT (MSG); LD (MSG); Li (MSG); LW (MSG); LE (MSG); Rückgabe "Index"; }}Die Hilfsklasse hier schreibt nur einige grundlegende Nutzungsmethoden. Sie können sie an Ihre Bedürfnisse anpassen und weitere Hilfsmethoden hinzufügen. Für Methoden, die in der Helferklasse nicht bereitgestellt werden, können Sie auch die L.GetLogger () -Methode verwenden, um die Logger -Instanz zu verwenden.
4. Ergebnisüberprüfung
Level -Bewertung der Protokolle: Trace <debugg <info <warn <fehler <fatal.
Weil die Ebene in meinem log4j2 auf die Info -Ebene eingestellt ist. Daher sind in den Druckinformationen nur drei Info-, Warn- und Fehlerstufen zu sehen (die Informationen auf der tödlichen Ebene werden nicht gedruckt, sonst ist sie zu sehen).
Die Druckinformationen sind in der folgenden Abbildung dargestellt:
Gleichzeitig wurde im Computersystem eine Protokolldatei generiert, wie in der folgenden Abbildung gezeigt:
Wenn Sie den Pfad beobachten, können Sie feststellen, dass dieser Pfad genau der Pfad ist, der in log4j2.xml eingestellt ist:
<!-Log-Dateiverzeichnis und komprimierte Dateiverzeichniskonfiguration-> <properties> <propertyName = "fileName">/home/kylin/log/knight/spring_log </property> <propertyName = "filEgz">/home/kylin/log/knight/spring-
5. Mehr
Die GitHub-Adresse von LOG4J2: https://github.com/apache/logging-log4j2
Die Beispielcodeadresse dieses Tutorials: https://github.com/dkylin/springboot-mampel/tree/master/springboot-log4j2
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.