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

Simple Log Service:GetLogs を使用してログをクエリする

最終更新日:Nov 09, 2025

ログを収集した後、GetLogs 操作を呼び出して収集したログをクエリできます。このトピックでは、GetLogs 操作を呼び出して収集したログをクエリする方法の例を示します。

前提条件

使用上の注意

  • この例では、中国 (杭州) リージョンのパブリック Simple Log Service エンドポイントが使用されます。エンドポイント: https://cn-hangzhou.log.aliyuncs.com

    プロジェクトと同じリージョンにある他の Alibaba Cloud サービスから Simple Log Service にアクセスする場合は、内部 Simple Log Service エンドポイント https://cn-hangzhou-intranet.log.aliyuncs.com を使用できます。

    Simple Log Service でサポートされているリージョンとエンドポイントの詳細については、「エンドポイント」をご参照ください。

  • SDK からの応答オブジェクトで IsCompleted() メソッドを呼び出して、クエリが完全な結果セットを返したかどうかを確認します。

    • IsCompleted() メソッドが true を返す場合、クエリは成功し、結果セットは完全です。

    • IsCompleted() メソッドが false を返す場合、クエリは成功しますが、結果セットは不完全です。完全な結果を取得するには、リクエストを繰り返す必要があります。不完全なクエリ結果の詳細については、「不正確なクエリの原因」をご参照ください。

パラメーター

リクエストパラメーター

名前

タイプ

必須

説明

project

String

はい

プロジェクトの名前。Simple Log Service のプロジェクトは、異なるユーザーのリソースを分離し、特定のリソースへのアクセスを制御するために使用されます。「プロジェクトの管理」をご参照ください。

logstore

String

はい

Logstore の名前。Simple Log Service の Logstore は、ログの収集、保存、クエリに使用されます。「Logstore の管理」をご参照ください。

from

int

はい

クエリする時間範囲の開始時刻。値は UNIX タイムスタンプです。

説明
  • Logstore がログを受信する時刻。__tag__:__receive_time__ フィールドは、Simple Log Service の予約済みフィールドです。

  • 開始時刻と終了時刻によって定義される時間範囲。時間範囲は、左閉右開の区間です。この区間には時間範囲の開始時刻は含まれますが、終了時刻は含まれません。両方が同じ場合、区間は無効になり、エラーが返されます。

  • 完全なデータをクエリできるようにするには、分単位で正確なクエリ時間範囲を指定します。分析文で時間範囲も指定した場合、その時間範囲がクエリと分析に使用されます。

  • 秒単位で正確な時間範囲を指定する場合は、日付および時刻関数を使用して時刻形式を変換できます。例:

    • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

to

int

はい

クエリする時間範囲の終了時刻。値は UNIX タイムスタンプです。

説明
  • Logstore がログを受信する時刻。__tag__:__receive_time__ フィールドは、Simple Log Service の予約済みフィールドです。

  • 開始時刻と終了時刻によって定義される時間範囲。時間範囲は、左閉右開の区間です。この区間には時間範囲の開始時刻は含まれますが、終了時刻は含まれません。両方が同じ場合、区間は無効になり、エラーが返されます。

  • 完全なデータをクエリできるようにするには、分単位で正確なクエリ時間範囲を指定します。分析文で時間範囲も指定した場合、その時間範囲がクエリと分析に使用されます。

  • 秒単位で正確な時間範囲を指定する場合は、日付および時刻関数を使用して時刻形式を変換できます。例:

    • * | SELECT * FROM log WHERE from_unixtime(__time__) > from_unixtime(1664186624) AND from_unixtime(__time__) < now()

    • * | SELECT * FROM log WHERE __time__ > to_unixtime(date_parse('2022-10-19 15:46:05', '%Y-%m-%d %H:%i:%s')) AND __time__ < to_unixtime(now())

topic

String

いいえ

ログのトピック。デフォルト値は空の文字列です。詳細については、「ログトピック」をご参照ください。

query

String

いいえ

検索文または分析文。詳細については、「クエリと分析の概要」をご参照ください。set session parallel_sql=true;query パラメーターの分析文に追加して、SQL 排他を使用します。例: * | set session parallel_sql=true; select count(*) as pv。一般的なクエリと分析の問題については、「ログのクエリと分析における一般的なエラー」をご参照ください。

説明

query パラメーターに分析文 (SQL 文) が含まれている場合、この操作の line および offset パラメーターは無効です。これらのパラメーターを 0 に設定し、SQL 文の LIMIT 句を使用してページングします。詳細については、「クエリと分析結果のページ分割」をご参照ください。

line

int

いいえ

このパラメーターは、query パラメーターに検索文が含まれている場合にのみ有効です。返されるログの最大数を指定します。値の範囲は 0 から 100 です。デフォルト値は 100 です。

offset

int

いいえ

このパラメーターは、query パラメーターに検索文が含まれている場合にのみ有効です。クエリを開始する行を指定します。デフォルト値は 0 です。

reverse

boolean

いいえ

タイムスタンプの降順でログを返すかどうかを指定します。精度は分単位です。

  • true: タイムスタンプの降順でログを返します。

  • false (デフォルト): タイムスタンプの昇順でログを返します。

重要
  • reverse パラメーターは、query パラメーターに検索文が含まれている場合にのみ有効です。返されるログのソート順を指定します。

  • query パラメーターにクエリおよび分析文が含まれている場合、reverse パラメーターは無効です。ソート順は、SQL 分析文の order by 句で指定されます。

powerSql

boolean

いいえ

[専用 SQL] を使用するかどうかを指定します。詳細については、「高性能で正確なクエリと分析 (専用 SQL)」をご参照ください。

  • true: 専用 SQL を使用します。

  • false (デフォルト): 標準 SQL を使用します。

powerSql パラメーターに加えて、query パラメーターを使用して専用 SQL を構成することもできます。

scan

boolean

いいえ

scan が true に設定されている場合、クエリはスキャンモードを使用します。

forward

boolean

いいえ

このパラメーターはスキャンクエリ専用です。forward が true に設定されている場合、クエリは次のページを取得します。それ以外の場合、クエリは前のページを取得します。

レスポンスパラメーター

レスポンスパラメーターの詳細については、「GetLogs - Logstore 内のログをクエリする」をご参照ください。

生ログ

body_bytes_sent:1750
host:www.example.com
http_referer:www.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.XX.XX
remote_addr:203.0.XX.XX
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
http_code:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66

ログのクエリと分析の例

次の Java サンプルコードは、ログをクエリおよび分析する方法の例を示しています。

重要

Simple Log Service SDK for Java を使用して GetLogs 操作を呼び出すときは、次の項目に注意してください。

  • query パラメーターに request_method:POST などの検索文のみが含まれている場合は、line パラメーターを使用して返すログの数を指定できます。このパラメーターの最大値は 100 です。100 を超えるログを返すには、SQL 文で LIMIT 句を使用する必要があります。詳細については、「LIMIT 句」をご参照ください。

  • query パラメーターに request_method:POST | SELECT host, COUNT(*) AS pv GROUP BY host LIMIT 5 などのクエリおよび分析文が含まれている場合、line パラメーターは無視されます。SQL 文の LIMIT 句を使用して、返す行数を指定する必要があります。詳細については、「LIMIT 句」をご参照ください。

クエリ文の詳細については、「基本構文」をご参照ください。

例 1: キーワードを使用したログのクエリ

この例では、キーワード path-0/file-5 を使用してログをクエリする方法を示します。クエリ用に GetLogsTest.java ファイルが作成されます。line パラメーターは 3 に設定され、3 つのログが返されることを指定します。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // プロジェクト名を入力します。
        String project = "your-project-name";
        // Simple Log Service のサービスエンドポイントを設定します。この例では、リージョンとして杭州を使用します。他のリージョンの場合は、実際のエンドポイントを指定します。
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Logstore 名を入力します。
        String logStore = "your-logstore-name";

        // Simple Log Service クライアントを作成します。
        Client client = new Client(host, accessId, accessKey);

        // 指定された Logstore でクエリを実行します。
        try {
            // キーワード "path-0/file-5" を使用してログをクエリします。
            String query = "path-0/file-5";

            int from = 1754449503;
            int to = 1754449510;

            // この例では、query パラメーターを使用して検索文を設定します。line パラメーターは、返されるログの数を制御するために使用されます。値は 3 で、最大値は 100 です。
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------クエリが開始されました。-------------");
            System.out.println("返されたクエリ結果数:" + logsResponse.GetCount());
            System.out.println("開始時刻:" + from);
            System.out.println("終了時刻:" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("ログ時刻: " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------クエリが終了しました。-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("エラーコード:" + e.GetErrorCode());
            System.out.println("エラーメッセージ:" + e.GetErrorMessage());
            throw e;
        }
    }
}

応答:

-------------クエリが開始されました。-------------
返されたクエリ結果数:3
開始時刻:1644573549
終了時刻:1644573849
ログ時刻: 1644573808
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","request_uri":"/request/path-0/file-5"...}
ログ時刻: 1644573808
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","request_uri":"/request/path-0/file-5"...}
ログ時刻: 1644573788
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","request_uri":"/request/path-0/file-5"...}
-------------クエリが終了しました。-------------

プロセスは終了コード 0 で終了しました

例 2: フィールドを指定したログのクエリ

この例では、リクエストメソッドが POST であるログをクエリする方法を示します。クエリ用に GetLogsTest.java ファイルが作成されます。line パラメーターは 3 に設定され、3 つのログが返されることを指定します。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // プロジェクト名を入力します。
        String project = "your-project-name";
        // Simple Log Service のエンドポイントを設定します。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際の値に置き換えてください。
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Logstore 名を入力します。
        String logStore = "your-logstore-name";

        // Simple Log Service クライアントを作成します。
        Client client = new Client(host, accessId, accessKey);

        // 指定された Logstore でクエリを実行します。
        try {
            // リクエストメソッドが POST のログをクエリします。
            String query = "request_method:POST";
            // クエリの時間範囲を設定します。
            int from = 1754449503;
            int to = 1754449510;

            // この例では、query パラメーターで検索文を指定します。line パラメーターは、返すログの数を指定します。値は 3 です。最大値は 100 です。
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query, 3, 0, true);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------クエリが開始されました。-------------");
            System.out.println("返されたクエリ結果数:" + logsResponse.GetCount());
            System.out.println("開始時刻:" + from);
            System.out.println("終了時刻:" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("ログ時刻: " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------クエリが終了しました。-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("エラーコード:" + e.GetErrorCode());
            System.out.println("エラーメッセージ:" + e.GetErrorMessage());
            throw e;
        }
    }
}

応答:

-------------クエリが開始されました。-------------
返されたクエリ結果数:3
開始時刻:1644574151
終了時刻:1644574451
ログ時刻: 1644574438
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","body_bytes_sent":"3604","request_method":"POST"...}
ログ時刻: 1644574438
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","body_bytes_sent":"3369","request_method":"POST"...}
ログ時刻: 1644574438
Jsonstring : {"remote_addr":"203.0.XX.XX","__topic__":"nginx_access_log","body_bytes_sent":"12714","request_method":"POST"...}
-------------クエリが終了しました。-------------

プロセスは終了コード 0 で終了しました

例 3: SQL 文を使用したログの分析

この例では、リクエストメソッドが POST であるログをクエリし、POST リクエストのページビュー (PV) をカウントする方法を示します。クエリ用に GetLogsTest.java ファイルが作成されます。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // プロジェクト名を入力します。
        String project = "your-project-name";
        // Simple Log Service のエンドポイントを設定します。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際の値に置き換えてください。
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Logstore 名を入力します。
        String logStore = "your-logstore-name";

        // Simple Log Service クライアントを作成します。
        Client client = new Client(host, accessId, accessKey);

        // 指定された Logstore でクエリを実行します。
        try {
            // リクエストメソッドが POST のログをクエリし、POST リクエストの PV 数をカウントします。
            String query = "request_method:POST|select COUNT(*) as pv";
            // クエリの時間範囲を設定します。
            int from = 1754449503;
            int to = 1754449510;

            // この例では、query パラメーターはクエリおよび分析文に設定されています。line パラメーターは無効です。
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------クエリが開始されました。-------------");
            System.out.println("返されたクエリ結果数:" + logsResponse.GetCount());
            System.out.println("開始時刻:" + from);
            System.out.println("終了時刻:" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("ログ時刻: " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------クエリが終了しました。-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("エラーコード:" + e.GetErrorCode());
            System.out.println("エラーメッセージ:" + e.GetErrorMessage());
            throw e;
        }
    }
}

応答:

-------------クエリが開始されました。-------------
返されたクエリ結果数:1
開始時刻:1644574354
終了時刻:1644574654
ログ時刻: 1644574354
Jsonstring : {"pv":"162","logtime":1644574354}
-------------クエリが終了しました。-------------

プロセスは終了コード 0 で終了しました

例 4: GROUP BY 句を使用したログの分析

この例では、リクエストメソッドが POST であるログをクエリし、結果をホスト別にグループ化する方法を示します。クエリ用に GetLogsTest.java ファイルが作成されます。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // プロジェクト名を入力します。
        String project = "your-project-name";
        // Simple Log Service のエンドポイントを設定します。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際の値に置き換えてください。
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Logstore 名を入力します。
        String logStore = "your-logstore-name";

        // Simple Log Service クライアントを作成します。
        Client client = new Client(host, accessId, accessKey);

        // 指定された Logstore でクエリを実行します。
        try {
            // リクエストメソッドが POST のログをクエリし、結果をホスト別にグループ化します。
            // SQL 構文の LIMIT 句を使用して、返される行数を 5 に制限します。
            String query = "request_method:POST|select host, COUNT(*) as pv group by host limit 5";
            // クエリの時間範囲を設定します。
            int from = 1754449503;
            int to = 1754449510;

            // この例では、query パラメーターはクエリおよび分析文に設定されています。line パラメーターは無効です。返す行数は、クエリの LIMIT 句によって決まります。
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------クエリが開始されました。-------------");
            System.out.println("返されたクエリ結果数:" + logsResponse.GetCount());
            System.out.println("開始時刻:" + from);
            System.out.println("終了時刻:" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("ログ時刻: " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------クエリが終了しました。-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("エラーコード:" + e.GetErrorCode());
            System.out.println("エラーメッセージ:" + e.GetErrorMessage());
            throw e;
        }
    }
}

応答:

-------------クエリが開始されました。-------------
返されたクエリ結果数:5
開始時刻:1644574445
終了時刻:1644574745
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example1.com","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example.org","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example.net","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example.edu","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.aliyundoc.com","logtime":1644574445}
-------------クエリが終了しました。-------------

プロセスは終了コード 0 で終了しました

例 5: GROUP BY 句を使用したログの分析 (200 ログが返される)

この例では、GetLogsTest.java という名前のファイルが作成されます。このファイルは、リクエストメソッドが POST のログをクエリし、取得したログをホスト別にグループ化し、最大 200 件のログを返すために使用されます。例:

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // プロジェクト名を入力します。
        String project = "your-project-name";
        // Simple Log Service のエンドポイントを設定します。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際の値に置き換えてください。
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Logstore 名を入力します。
        String logStore = "your-logstore-name";

        // Simple Log Service クライアントを作成します。
        Client client = new Client(host, accessId, accessKey);

        // 指定された Logstore でクエリを実行します。
        try {
            // リクエストメソッドが POST のログをクエリし、結果をホスト別にグループ化します。
            // SQL 構文の LIMIT 句を使用して、返す行数を指定します。
            String query = "request_method:POST|select host, COUNT(*) as pv group by host limit 0,200";
            // クエリの時間範囲を設定します。
            int from = 1754449503;
            int to = 1754449510;

            // この例では、query パラメーターはクエリおよび分析文に設定されています。line パラメーターは無効です。
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------クエリが開始されました。-------------");
            System.out.println("返されたクエリ結果数:" + logsResponse.GetCount());
            System.out.println("開始時刻:" + from);
            System.out.println("終了時刻:" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("ログ時刻: " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------クエリが終了しました。-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("エラーコード:" + e.GetErrorCode());
            System.out.println("エラーメッセージ:" + e.GetErrorMessage());
            throw e;
        }
    }
}

応答:

-------------クエリが開始されました。-------------
返されたクエリ結果数:200
開始時刻:1644574445
終了時刻:1644574745
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example1.com","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example.org","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example.net","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.example.edu","logtime":1644574445}
ログ時刻: 1644574445
Jsonstring : {"pv":"1","host":"www.aliyundoc.com","logtime":1644574445}
......
-------------クエリが終了しました。-------------

プロセスは終了コード 0 で終了しました

例 6: SQL 文を使用して過去 1 時間以内のログの総数をクエリする

この例では、SQL 文 *|select count(*) as count を使用して、過去 1 時間のログの総数をクエリする方法を示します。クエリ用に GetLogsTest.java ファイルが作成されます。

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.GetLogsRequest;
import com.aliyun.openservices.log.response.GetLogsResponse;

import java.util.Date;

public class GetLogsTest {

    public static void main(String[] args) throws LogException {
        // この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // プロジェクト名を入力します。
        String project = "your-project-name";
        // Simple Log Service のエンドポイントを設定します。この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際の値に置き換えてください。
        String host = "cn-hangzhou.log.aliyuncs.com";
        // Logstore 名を入力します。
        String logStore = "your-logstore-name";

        // Simple Log Service クライアントを作成します。
        Client client = new Client(host, accessId, accessKey);

        // 指定された Logstore でクエリを実行します。
        try {
            // ログの総数をクエリします。
            String query = "*|select count(*) as count";
            // クエリの時間範囲を 1 時間 (3600 秒) に設定します。
            int from = (int) (new Date().getTime() / 1000 - 3600);
            int to = (int) (new Date().getTime() / 1000);
            int offset = 0;
            int line = 200;
            // この例では、query パラメーターの SQL 文を使用して、指定された時間範囲内のログの総数をクエリします。
            GetLogsRequest request = new GetLogsRequest(project, logStore, from, to, "", query,line,offset,true);
            GetLogsResponse logsResponse = client.GetLogs(request);
            System.out.println("-------------クエリが開始されました。-------------");
            System.out.println("返されたクエリ結果数:" + logsResponse.GetCount());
            System.out.println("開始時刻:" + from);
            System.out.println("終了時刻:" + to);
            for (QueriedLog log : logsResponse.getLogs()) {
                LogItem item = log.GetLogItem();
                System.out.println("ログ時刻: " + item.mLogTime);
                System.out.println("Jsonstring : " + item.ToJsonString());
            }
            System.out.println("-------------クエリが終了しました。-------------");

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("エラーコード:" + e.GetErrorCode());
            System.out.println("エラーメッセージ:" + e.GetErrorMessage());
            throw e;
        }
    }
}

返された結果は、過去 1 時間以内のログの総数が 19,051 であることを示しています。応答:

開始時刻:1675041679
終了時刻:1675045279
返された SQL 結果数:1
Jsonstring : {"count":"19051","logtime":1675041679}
-------------クエリが終了しました。-------------

リファレンス

  • API 呼び出しが失敗した場合、Simple Log Service からの応答にはエラーコードが含まれます。詳細については、「エラーコード」をご参照ください。

  • ネイティブ SDK に加えて、Simple Log Service は一般的な Alibaba Cloud SDK もサポートしています。詳細については、「Simple Log Service_SDK Center_Alibaba Cloud OpenAPI Explorer」をご参照ください。

  • Simple Log Service は、自動構成のためのコマンドラインインターフェイス (CLI) を提供します。詳細については、「Simple Log Service CLI の概要」をご参照ください。

  • その他のサンプルコードについては、GitHub の「Alibaba Cloud Simple Log Service SDK for Java」をご参照ください。