すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Log4jログの分析

最終更新日:Aug 26, 2024

このトピックでは、Log4jログを分析する方法について説明します。 この例では、電子商取引会社のログが分析される。

前提条件

  • Log4jログが収集されます。 詳細については、「Log4jログの収集」をご参照ください。

  • インデックスが作成されます。 詳細については、「インデックスの作成」をご参照ください。

    この例で使用されるインデックスを次の図に示します。指定字段查询

背景情報

Apache Log4jは、ログ出力先をコンソール、ファイル、GUIコンポーネント、ソケットサーバー、NTイベントレコーダー、またはUNIX Syslogデーモンに設定できるオープンソースプロジェクトです。 Apache Log4jでは、各ログの出力形式を設定し、各ログのレベルを定義して、ログ生成をより詳細に管理することもできます。 上記の機能を構成するには、構成ファイルのみを使用する必要があります。 アプリケーションコードを変更する必要はありません。 Log4jは、次の主要コンポーネントで構成されます。

  • レイアウト

    レイアウトは、ログを特定の形式にフォーマットするために使用されます。 共通レイアウトを次の表に示します。

    レイアウト

    説明

    HTMLLayout

    ログをHTMLテーブルとしてフォーマットします。

    SimpleLayout

    INFOレベルのログなど、単純な形式でログをフォーマットします。

    PatternLayout

    ログをカスタム形式で出力します。 要素の配置や形式 (タイムスタンプ、ログレベル、スレッド名、クラス名、メソッド名、ログデータなど) を指定できます。

  • Appenders

    ログの宛先を定义するために、アプレットが使用されます。 異なる宛先にログを送信するように複数のアプレットを設定できます。 次の表に、共通のアペンダーを示します。

    Appender

    説明

    ConsoleAppender

    ログをコンソールに出力します。

    FileAppender

    ログをファイルに出力します。

    DailyRollingFileAppender

    毎日新しいファイルにログを出力します。

    RollingFileAppender

    ログを特定のサイズのファイルに出力します。 ファイルが指定されたサイズに達すると、システムは自動的にファイルの名前を変更し、新しいファイルを生成します。

    JDBCAppender

    ログをデータベースに格納します。

  • ロガー

    ロガーは、ログのエントリポイントを定義し、ログ情報をキャプチャするために使用されます。 各ロガーには、その重要度または重大度に基づいてログレベルが割り当てられます。 Log4jは、以下のログレベルを定義する: OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、およびALL (優先度の降順でリストされる) 。 ログレベルは継承できます。 子クラスは、親クラスのすべてのログレベルを記録します。 次の表に、ログレベルを示します。

    ログレベル

    説明

    オフ

    すべてのログを無効にします。

    致命的

    アプリケーションを終了させる可能性のあるエラーイベントを示します。

    ERROR

    システムの実行に影響を与えないエラーイベントを示します。

    WARN

    潜在的なエラーを示します。

    INFO

    アプリケーションの実行に焦点を当てています。 ほとんどの場合、このログレベルは、ログが粗い方法で管理されるシナリオで使用されます。

    デバッグ

    診断を容易にします。 ほとんどの場合、このログレベルはアプリケーションのデバッグシナリオで使用されます。

    トレース

    プログラムの実行中に変数を出力し、実行プロセスを表示します。 このログレベルはプログラムのトレースに使用されます。

    すべて

    すべてのログを印刷します。

説明

ロガーは複数のアペンダに対応できます。 アペンダーは1つのレイアウトにのみ対応できます。

この例では、企業は、eコマースプラットフォームに最適なソリューションを取得したいと考えています。 同社は、プラットフォームの安定性、システムエラー、データセキュリティ、行動データなどの情報を分析する必要があります。 行動データは、ログオン方法、ログオン時間、ログオン持続時間、閲覧されたページ、ページの滞留時間、平均注文時間、および消費レベルを含む。 Simple Log Serviceは、ログの保存と分析に役立つログ収集およびログ分析機能を提供します。 次の例は、Simple Log Serviceによって収集されるサンプルログを示しています。

  • 次のログには、ログイン情報が記録されます。

    level:  INFO  
    location:  com.aliyun.log4jappendertest.Log4jAppenderBizDemo.login(Log4jAppenderBizDemo.java:38)
    message:  User login successfully. requestID=id4 userID=user8  
    thread:  main  
    time:  2022-01-26T15:31+0000
  • 次のログは購入情報を記録します。

    level:  INFO  
    location:  com.aliyun.log4jappendertest.Log4jAppenderBizDemo.order(Log4jAppenderBizDemo.java:46)
    message:  Place an order successfully. requestID=id44 userID=user8 itemID=item3 amount=9  
    thread:  main  
    time:  2022-01-26T15:31+0000

手順

  1. にログインします。Simple Log Serviceコンソール.

  2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    image

  3. 左側のナビゲーションウィンドウで、[ログストレージ] をクリックします。 Logstoreリストで、管理するLogstoreをクリックします。

    image

  4. 検索ボックスにクエリステートメントを入力し、[過去15分] をクリックしてクエリ時間範囲を指定します。

    詳細については、「手順1: クエリステートメントの入力」をご参照ください。

    • 前の1時間以内に最も多くのエラーが発生した3つの位置を照会します。

      level: ERROR | select location ,count(*) as count GROUP BY  location  ORDER BY count DESC LIMIT 3
    • 過去15分以内に生成された各ログレベルのログ数を照会します。

      * | select level ,count(*) as count GROUP BY level ORDER BY count DESC
    • 前の1時間以内に最も頻繁にプラットフォームにログオンする3人のユーザーを照会します。

      login | SELECT regexp_extract(message, 'userID=(?<userID>[a-zA-Z\d]+)', 1) AS userID, count(*) as count GROUP BY userID ORDER BY count DESC LIMIT 3
    • 過去15分以内の各ユーザーの支払い総額を照会します。

      order | SELECT regexp_extract(message, 'userID=(?<userID>[a-zA-Z\d]+)', 1) AS userID, sum(cast(regexp_extract(message, 'amount=(?<amount>[a-zA-Z\d]+)', 1) AS double)) AS amount GROUP BY userID