バックグラウンドプログラムが開発されて起動すると、一般的にログ情報印刷とログログの録音が使用されます。開発中、ログ情報印刷は問題を迅速に見つけて、すぐに開発するのに役立ちます。プログラムがオンラインになった後にバグまたはエラーが発生した場合、問題を見つけるにはログレコードが必要です。
Spring Bootは、最も一般的に使用されるApache log4J、Log4j 2がLog4Jのアップグレードバージョンである多くの異なるロギングシステムを統合できます。これは、Log4j 1.xと比較して多くの大幅な改善を行っています。したがって、このブログでは、Spring Bootがlog4j2を統合および構成する方法について直接説明します。
1。log4j2パッケージをインポートします
Gradleを使用している場合は、build.gradleファイルに次の依存関係を追加します。 Gradleメソッドは、サンプルコードで使用されます。
依存関係{// log4j2コンパイル "org.apache.logging.log4j:log4j-api:2.8" compile "org.apache.logging.log4j:2.8" //ロガーでのアシンコンパイルをサポートするために使用されるcom.lmax:dusruptor:3.3.6 '}Mavenを使用している場合は、pom.xmlファイルに次の依存関係を追加します。
<Dependencies> <Dependency> <GroupId> org.apache.logging.log4j </groupid> <artifactid> log4j-api </artifactid> <version> 2.8 </version> </dependency> <ependency> <ependency> epthency> org.apache.logging.log4j < <バージョン> 2.8 </version> </dependency> <dependency> <groupid> com.lmax </groupid> <artifactid> dircraptor </artifactid> <バージョン> 3.3.6 </version> </dependency> </dependencies>
2。Log4J2構成ファイルを追加します
プロジェクトのリソースファイルのルートディレクトリにlog4j2.xmlファイルを作成し、次のコードをファイルにコピーします。
<?xml version = "1.0" encoding = "utf-8"?> <! - 構成後のステータスは、log4j2自体内の情報出力を設定するために使用されます。設定できません。トレースするように設定されると、log4j2内にさまざまな詳細な出力が表示されます。オフ(オフ)またはエラー(出力エラー情報のみ)に設定できます - > <ConfigurationStatus = "Off"> <! - ログファイルディレクトリと圧縮ファイルディレクトリ構成 - > <プロパティ> <PropertyName = "filename">/home/kylin/log/night/spring_log </property_propertynam </properties> <付録> <! - 出力コンソールログの構成 - > <consolename = "console" target = "system_out"> <! - コンソールはレベル以上に情報を出力する(onmatch)、およびその他の直接拒否(onmismatch) - > <thresholdfilterlevel = "infut =" onmatch = " <patternLayoutPattern = "%d {hh:mm:ss.sss} [%t]%-5level%logger {36} - %msg%n"/>> </console> <! - すべての情報を印刷します。サイズがサイズを超えるたびに、このサイズのログは、年月ごとに作成されたフォルダーに自動的に保存され、アーカイブとして圧縮されます - > <RollingrandomAccessFileName = "Infofile" filename = "$ {filename} /web-info.log" fileName "fallflush =" false "false" filepattern = "$ {filegz}/$$ {date:yyyy-mm}/app-%d {mm-dd-yyyy} - %i.web-info.gz"> <patternlayoutpattern = "%d {yyyy-mm-dd 'at' hh:mm:ss z z ss z ss z [%l-5lever %msg%xex%n "/> <policies> <timebasedtrigggeringpolicyinterval =" 6 "musulate =" true "/> <sizebasedtrigggeringpolicysize =" 50 mb "/> </<filters> <! - 記録のみの情報と警告レベル情報 - > <thresholdfilterlevel = "info" onmatch = "accept" onmismatch = "deny"/> </filters> <! - 1日あたりの圧縮パケットの最大数を指定します。 <rollingrandomaccessfilename = "errorfile" filename = "$ {filename} /web-error.log" fialefattern = "filegz}/$$ {date:yyyy-mm}/app-%d {mmddddddyy} - <patternLayoutPattern = "%d {yyyyy-mm-dd 'at' hh:mm:mm:ss z} [%t]%-5level%logger {36}%l%m-%msg%xex%n"/> <ポリシー> <Policies> <timebasedtriggeringpolicyinterval = " MB "/> </policies> <filters> <! - エラーレベルのみ情報のみを記録します - > <thresholdfilterlevel =" error "onmatch =" accept "onmismatch =" deny "/> </filters> <! - 1日あたりの最大圧縮パケットの指定、デフォルト7、以前のものを超えた場合、 </rolingrandomaccessfile> </appenters> <! - 1日あたりの圧縮パケットの最大数、デフォルトは7、前のパケットは上書きされます - > <defaultrollovertrategymax = "50"/> </rollingrandomaccessfile> </rolingrandomaccessfile> </appenters> < ASYNCROOT -ASYNCHRONOUS LOGGING -LMAX DISRAMSTORS-> <ASYNCROOTLEVEL = "INFO" Additivity = "False"> <AppenderRefref = "AppenderRefref =" InfoFile "/>> <AppenderRefref =" Errorfile "/> </asyncoot>3. log4j2補助クラスを書き込みます
上記の構成を作成した後、補助クラスを作成して、LOG4J2を使用してログを記録できるようにすることができます。
UTILSパッケージにL.Javaクラスファイルを作成します。
パッケージcom.spring.log4j2.utils; import org.apache.logging.log4j.logmanager; import org.apache.logging.log4j.logger;/*** Logger Logging Auxiliary class** Kylinが2017/5/11に作成しました。 */public classl {private static final logger logger = logmanager.getLogger(); privatel(){ / *はインスタンス化できません * /新しいunsupportedoperationexception( "instantiated"); } 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); }}補助クラスを書いた後、使用するのは非常に簡単で、次のコードで簡単に使用できます。
@ControllerPublic ClassWebController {@RequestMapping( "/")publicsTringIndex(){string msg = "Spring BootシリーズでのLog4j2の構成と使用"; lt(msg); LD(MSG); li(msg); LW(MSG); le(msg); 「インデックス」を返します。 }}ここの補助クラスは、いくつかの基本的な使用方法を書くだけで、ニーズに応じてそれらをカスタマイズして、より補助方法を追加できます。ヘルパークラスで提供されていないメソッドの場合、l.getLogger()メソッドを使用して、ロガーインスタンスを使用することもできます。
4。結果の確認
ログのレベル評価:trace <debug <info <warn <error <fatal。
log4j2のレベルが情報レベルに設定されているためです。したがって、印刷情報では、3つのレベルの情報、警告、およびエラーのみが表示されます(致命的なレベルの情報は印刷されていません。そうでなければわかります)。
印刷情報を下の図に示します。
同時に、下の図に示すように、コンピューターシステムでログファイルが生成されました。
パスを観察することにより、このパスはまさにlog4j2.xmlで設定されたパスであることがわかります。
<! - ログファイルディレクトリと圧縮ファイルディレクトリ構成 - > <プロパティ> <PropertyName = "filename">/home/kylin/log/night/spring_log </property> <propertyname = "filegz">/kylin/log/log/night/spring_log/7z </properties> </property>
5。もっと
log4j2のgithubアドレス:https://github.com/apache/logging-log4j2
このチュートリアルのサンプルコードアドレス:https://github.com/dkylin/springboot-sample/tree/master/springboot-log4j2
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。