logbackログの非同期印刷方法の紹介(コード例)
この記事では、ログバック ログの非同期出力方法 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。
最近問題が発生しました。顧客のサーバー プログラムのリクエストへの応答が時折遅すぎることがあり、ログを確認したところ、RSA 署名検証コードが 20 秒を超えて実行されていたことが判明しました。一方、通常の状況では、必要な時間は 16 ミリ秒 だけです。
RSA 証明書はサーバーの起動時に読み込まれるため、ファイルの読み取りが遅いという問題はありません。これらのコード行を確認した後、最も疑わしいのは、logback ログ出力のコードです。 運用ログの構成を確認しました。logback.xml の構成では、今月のログ ファイルがすべて同じフォルダーに含まれています。 2019 年 1 月の文書。各ファイルは*.log.zip というサフィックスと 10MB のサイズで構成されます。これは、10MB がサイズ区切りのファイルであることを意味します。ログ印刷クラスは RollingFileAppender で構成されます。
2019 年 1 月 30 日、2019 年 1 月のフォルダーの下に 5,000 を超えるログ ファイルが生成され、1 日あたり平均 167 のログ ファイルが生成されました。 つまり、ログ ファイルが多すぎてインデックス ファイルの時間が長すぎるため、コードの実行が遅くなっていると考えられます。つまり、これを疑いたい場合は、前提条件があります。 : ログの印刷は同期であり、印刷ログが呼び出されます。 コード行が実行されてファイルに書き込まれた後、ビジネス コードは引き続き実行されます。 何人かの同僚に尋ねたところ、ログの印刷は非同期で実行されると全員が言いました。同期だと答えたのは 1 人の友人だけでした。ログの印刷とファイルの書き込みには時間がかかり、ログ フレームワークはファイルを同期的に書き込むべきではないと誰もが考えています。ただし、実際には、非同期印刷が構成されていない場合、ログは同期的に印刷されます。 ブレークポイントのフォローアップ コードにより、ログがファイルに同期的に書き込まれることがわかりました。構成されたアペンダーが AsyncAppender である場合にのみ、ログの出力は非同期で出力されます。 ログを同期的に出力する場合の状況は次のとおりです: logback.xml 構成:<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> ...... </appender> <root level="DEBUG"> <appender-ref ref="CONSOLE"/> </root>
LogWork.debug("111111111111"); System.out.println("2222222222222");
非同期印刷ログ クラスを構成する方法は次のとおりです:
非同期印刷ログ クラス AsyncAppender は他のログ印刷クラスを参照する必要があり、ASYNC は印刷する必要があるだけです。印刷する必要があるログ 定義されたキャッシュ キューに書き込み、デーモン スレッドを開始してキューからログを取得し、CONSOLE ログ プリンタを呼び出してファイルを書き込みます。このようにして、ログの印刷は非同期で実行されます。 logback.xml 設定:<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> ...... </appender> <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>100</queueSize> <neverBlock>true</neverBlock> <appender-ref ref="CONSOLE"/> </appender> <root level="INFO"> <appender-ref ref="ASYNC"/> </root>
LogWork.debug("111111111111"); System.out.println("2222222222222");
以上がlogbackログの非同期印刷方法の紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









OAUTH2.0のAccess_Tokenを使用して、インターフェイスアクセス許可を制御する方法は? OAuth2.0の適用では、...

バックエンド開発における階層アーキテクチャの議論。バックエンド開発では、階層アーキテクチャは一般的にコントローラー、サービス、DAOの3層を含む一般的な設計パターンです...

Javaリモートデバッグでの絶え間ない買収に関する質問と回答は、Javaをリモートデバッグに使用する際に、困難な現象に遭遇する可能性があります。それ...

初心者向けのJavaプロジェクト管理ツールを選択することと混同します。バックエンド開発を学び始めたばかりの人にとっては、適切なプロジェクト管理ツールを選択することが重要です...

分散システム分散トランザクション処理における最終的な一貫性の適用を調査することは、分散システムアーキテクチャにおいて常に問題となっています。問題を解決するために...

名前を数字に変換してグループ内でソートを実装する方法は?ユーザーをグループでソートする場合、ユーザーの名前を数字に変換して、異なる可能性があることがよくあります...

PyflinkのジョブをYARNに送信するときにPythonスクリプトが見つからない理由の分析Yarnを介してPyflinkジョブを提出しようとすると、遭遇する可能性があります...

開発プロセス中にJavaでエンティティクラスのアノテーションのパラメーターを動的に構成する方法は、さまざまな環境に応じて注釈パラメーターを動的に構成する必要性に遭遇することがよくあります...
