Springboot設定log4j2非同期出力ログ

強い弟は、記事を送っていた前に:チャットログ構成プロジェクトプロジェクトのlog4jログ設定ファイルの物語、ファイルに関連する問題のセーブ数を達成し、制限するために、いくつかのパラメータを変更し、治療に対応することで、ログのステージを保存します。もちろん、プロジェクトが後で処理する検索エンジンのクエリにあまりにも大きなログアクセスELKログであることが推奨されている場合。

今日、我々はまだしかし、ログの保存に関するものではありませんが、プログラムに必要な経験について素晴らしいです、ログについて何かを言うとき、複数の出力ログ、我々はプログラムを改善するためのプロジェクトに対処することができますどのように各ボリュームのログパフォーマンス。

プログラムが出力するログを必要とする複数の点、およびログ出力の各ドットの内容大きい;プログラムは、(トラブルシューティングのための)ログの多くは、複雑な論理出力点を必要とする場合、ユーザは高い同時実行ログをもたらす、アプリケーションにアクセスしたときに大出力は非常に高速であるとき、圧力がQAプログラムを測定したとき、あなたはパフォーマンスの低下を感じる......

ビジネスロジックに大きな影響を持っていませんので、アカウントにログインの出力を取って、我々のプログラムのパフォーマンスを向上させるとするには、間違いなく、私たちがしなければならないことは、ビジネス・ロジックからスピンオフしたログ出力され、より正確なスルーになります非同期に、ログ出力は、出力に影響を及ぼさずに、ビジネスへの影響を最小限にし、私たちに必要なログを保存するようにということ。

非同期ログ出力:

その後、我々は単に(Springbootプロジェクトでは、説明しますlog4j2を使用してグローバルに非同期ログを設定する方法だけでなく、プログラムが実際に非同期ログ出力を開いたことを確認する方法、)。

使用はlog4jのバージョンでは、機能上の問題非同期ログ出力が比較的多く残っているので、それを言及する最初log4j2なぜ、性能も違いがたくさんある、今日は別の記事では、両者の違いが表示されます発行しました。だから、0202で瞬間に、あなたがたlog4j log4j2にアップグレードすることができることをお勧めします。あなたはlogbackロギングツールを使用している場合はもちろん、それはまた、非同期ログ出力と道を開いた、私たちは、百度を所有することができます興味を持っています。

実際にSpringboot設定log4j2非同期ログ出力は、混合モードとフルモードがあり、比較的簡単で、政府はまた、非同期モードでは、最大の増加性能の完全な比較を推奨しています。だからここに強い弟は、唯一の全体構成非同期モードに言及があります:

依存関係を追加するステップ:

<dependency>
  <groupId>com.lmax</groupId>
  <artifactId>disruptor</artifactId>
  <version>3.4.2</version>
</dependency>

ステップ2、またはプロジェクトの文章開始で起動クラスの属性パラメータを変更するために追加しました:

スタートアップの種類を変更します。


@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
//下面语句使得日志输出使用异步处理,减小输出日志对性能的影响
        System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
        SpringApplication.run(TestApplication.class, args);
    }
}

 プロジェクト開始文を変更します。

java -jar -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector xxx.jar

ライン上の2つの方法のいずれかを選択します。個人的な好み処理によります。

はい、それはプロジェクトは、非同期のログ機能を開始した後に達成することができます上記のシンプルな2つのステップです。もちろん、一部の人々はまた頼むかもしれない:コンフィギュレーションは、コンフィギュレーションであるが、最終的には本当にそれの非同期ログ出力されませんか?どのようにそれを確認するには?

ここでは、我々は起動プロジェクトを表示するスレッド名の成功によって構成されているかどうか確認することができます。以下は、プロジェクトを開始した後、強い弟、プロジェクトのスレッド状況のスクリーンショットです:

あなたが見ることができる、赤いボックスの上Log4j2-TF-AsyncLogger非同期ログ出力スレッドですLog4j2についての2件のスレッドがあります。それは私たちが構成が正常に行われた参照することを示しています。それでもわからない場合、あなたがスレッドを選択し、デバッグモードでプロジェクトを実行することができ、IDEは、プログラムが正常に非同期のログ出力機能を構成するために知っていることができるようになり、一連の操作のスレッドのスレッドに到達し表示する入力します。

さて、上記のSpringbootはlog4j2非同期出力ログを達成達成することが適切です。実際には、コンテンツは比較的簡単ですが、強力な兄より多くの我々は問題が発生した際、地元のプロジェクトのための適切な解決策を考えることができるようすることを渡したいが必要ではありませんが、それは衝撃性能とビジネスロジックをした、完全に非同期または分割により保証性能への道。

、そこ原理を説明するのも過言ではありませんが、オンラインヘルプの対応原理はあまりにも実際にあるので、どのように設定するには、彼らは何もなく、漠然としません実現、我々は原則的に興味を持っている、また、唯一の刺激の友人として機能ここでは、より多くの自分を知ってもらうことができます我々は、ログ関連のボトルネックが発生したことをちょうど望みは、この解決策を考えることができます。

第もっと世間の注目を取得し、オーノー質問をすることができる公共の場での問題があります。

強い兄100100強制

百千百のプログラミング、インターネットと何も新たな洞察を強制しました

54元記事公開 ウォン称賛69 ビューに25万+を

おすすめ

転載: blog.csdn.net/seanxwq/article/details/103977487