DUICUO

小さなミドルウェアを手作業で作成し、オープンソース化しました。

プロジェクト名: LogLevelSwitch (ランタイム動的ログ レベル スイッチ)。

プロジェクトのアドレスです。通りかかったらお気軽に星を付けてください :)

https://github.com/saigu/LogLevelSwitch.

1. LogLevelSwitch が必要な理由は何ですか?

ビジネスが拡大し続けるにつれて、各オンライン障害を迅速に特定することが開発チームにとって大きな課題となります。

重要なビジネスロジックを出力するためにログを使用することは、問題を特定するための効果的な方法の一つです。しかし、過剰なログ記録はシステムに余分なオーバーヘッドをもたらし、極端な場合にはシステムクラッシュにつながる可能性があります。

したがって、パフォーマンスと迅速な障害箇所のバランスをとるためには、より多くのログ情報を出力してオンラインの問題をトラブルシューティングしたり、ログの印刷によるパフォーマンスの消費を削減したりするために、ログ レベルをリアルタイムで調整できる必要があります。

上記のような背景から、LogLevelSwitch が誕生しました。

LogLevleSwitch はミドルウェアとしてアプリケーションに組み込まれており、構成センターのホット アップデート機能に基づいて、アプリケーションが実行時にログ レベルを動的に調整できるようにします。

2. 機能特性

互換性: Log4j、Log4j2、Logback などをサポートします。

スケーラビリティ:ローカル設定ファイルに基づくデフォルトの設定変更方法を使用できます(ローカルテストおよび学習目的のみ)。本番環境では、ホットアップデートを実現するために、SPI経由で独自の設定センターに接続することを「強く推奨」します。

使いやすさ:統合が簡単で、優れた結果が得られ、わずか 5 分で使い始めることができます。

3. 基本アーキテクチャ

LogLevelSwitch を Application クラスにインポートします。

LogLevelSwitch は、LogContext と SwitchContext という 2 つのコア コンポーネントで構成されています。

  • SwitchContext:構成センターから取得したスイッチの状態と特定のロガー構成情報を保存し、構成センターからのメッセージをリッスンすることでスイッチの内容をリアルタイムに更新し、ロガーレベルの変更を通知します。
  • LogContext:アプリケーションの元の Logger およびログ レベル情報を保存し、スイッチ構成に基づいて Logger レベルを更新または復元できます。

4. クイックスタート

言うまでもなく、ぜひ試してみましょう!

(1)典型的なSpringプロジェクト

たった3つのステップで完了します。

ステップ 1:アプリケーションの pom ファイルに依存関係を追加します。

 <依存関係>
< グループID > io .github .saigu </ グループID >
<artifactId> ログスイッチコア</artifactId>
< バージョン> 1.0.0 - ベータ</ バージョン>
</依存関係>

ステップ 2:構成 Bean を構築します。

 @構成
パブリッククラスLogLevelSwitchConfig {
@ビーン
ログレベルスイッチログレベルスイッチ() {
新しいLogLevelSwitch () を返します
}
}

ステップ 3:構成センターにアクセスします。

構成センターの SPI 実装を宣言します。

  • リソース パスの下に新しい META-INF/services ディレクトリを作成し、ファイルに次のように名前を付けます。
  • io.github.saigu.log.level.sw.listener.ConfigListener ファイルを設定し、必要な「実装クラス名」をそこに書き込みます。

実装 1:プロジェクトに組み込まれた LocalFile 構成センター。

独自の構成センターがまだない場合は、組み込みのローカル構成ファイル ベースのローカル テストおよび学習ツールを使用します。

実装クラス名は次のとおりです。

 io .github .saigu .log .level .sw .listener .LocalFileListener

なお、実稼働環境では、ホット アップデートを実現するために、「実装 2」を介して独自の構成センターに接続することを強くお勧めします。

リソース ディレクトリに LocalSwitch.json という名前の新しいファイルを作成します。

次に、スイッチの設定を入力します。

 {
「ステータス」「オン」
「ロガービーンズ」 : [
{
「名前」 : 「すべて」
「レベル」「エラー」
}
]
}

実装 2: SPI 拡張構成をカスタマイズし、独自の構成センターに接続します。

すでに独自の構成センターをお持ちの場合は、SPI 経由で構成を拡張し、独自の構成センターに接続できます。

「実装クラス名」は、独自の実装クラス名です。

(2)Spring Bootプロジェクト

2段階アクセス。

ステップ 1:アプリケーションの pom ファイルに依存関係を追加します。

 <依存関係>
< グループID > io .github .saigu </ グループID >
<artifactId> ログスイッチスターター</artifactId>
< バージョン> 1.0.0 - ベータ</ バージョン>
</依存関係>

ステップ 2:構成センターにアクセスします。

「方法1」と同じです。

5. キー設定

SwitchContext は重要な構成です。

参考例:

 {
「ステータス」「オン」
「ロガービーンズ」 : [
{
「名前」 : 「すべて」
「レベル」「エラー」
}
]
}

6. 注意事項

ログの使用を標準化し、フォールバック スイッチの効果に影響を与えないようにするために、システムは初期化中にプロジェクトが依存するログ フレームワークの実装をチェックします。

ログにプロンプ​​トが表示された場合は、次の点に注意してください...

「複数のログ記録フレームワークが存在します。1 つだけ保持することをお勧めします。そうしないと、ログ記録の低下スイッチが機能しません。」

これは、アプリケーションで複数のログ記録フレームワークの実装が検出されたことを示します。

冗長なログ記録フレームワークを pom.xml ファイルから削除し、単一のログ記録フレームワークが使用されるようにすることをお勧めします。