All Products
Search
Document Center

Simple Log Service:Use GetHistograms to query the distribution of logs

Last Updated:Sep 11, 2026

This topic describes how to call the GetHistograms operation of Simple Log Service SDK for Java to query the distribution of logs within a specific time range and provides sample code.

Prerequisites

Precautions

In this example, the public Simple Log Service endpoint for the China (Hangzhou) region is used. Endpoint: https://cn-hangzhou.log.aliyuncs.com.

If you want to access Simple Log Service from other Alibaba Cloud services that reside in the same region as your project, you can use the internal Simple Log Service endpoint, which is https://cn-hangzhou-intranet.log.aliyuncs.com.

For more information about the supported regions and endpoints of Simple Log Service, see Endpoint.

Raw log

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

Sample code

The following sample code provides an example on how to query the distribution of access requests from 47.100.XX.XX within an hour:

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Histogram;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetHistogramsResponse;

public class GetHistograms {
    public static void main(String[] args) throws LogException {
        // In this example, the AccessKey ID and AccessKey secret are obtained from environment variables.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // The name of the project.
        String projectName = "ali-test-project";
        // The endpoint of Simple Log Service. This example uses the endpoint of the China (Hangzhou) region. Replace the endpoint with the one for your region.
        String host = "https://cn-hangzhou.log.aliyuncs.com";

        // Create a Simple Log Service client.
        Client client = new Client(host, accessId, accessKey);

        try {
            // The name of the Logstore.
            String logstoreName = "ali-test-logstore";

            // Query the number of access requests from 47.100.XX.XX within one hour.
            String query = "remote_addr:47.100.XX.XX";
            System.out.println(String.format("ready to get histograms from %s",logstoreName));

            // fromTime and toTime specify the time range to query logs. The values are UNIX timestamps. The time range is one hour.
            int fromTime = (int) (System.currentTimeMillis()/1000 - 3600);
            int toTime = fromTime + 3600;

            GetHistogramsResponse response = client.GetHistograms(projectName,logstoreName,fromTime,toTime,"",query);
            for (Histogram histogram : response.GetHistograms()) {
                // Because there can be many intervals, only intervals that contain logs are printed.
                if (0 < histogram.GetCount()){
                    // The number of logs.
                    System.out.println("log number is :" + histogram.GetCount());
                    // The start time of the log distribution.
                    System.out.println("from time is :" + histogram.GetFrom());
                    // The end time of the log distribution.
                    System.out.println("to time is :" + histogram.GetTo());
                    // Indicates whether the result in this time interval is complete.
                    System.out.println("is completed :" + histogram.IsCompleted());
                }
            }
            System.out.println(String.format("get histograms from %s success",logstoreName));

        } catch (LogException e) {
            System.out.println("LogException e :" + e.toString());
            System.out.println("error code :" + e.GetErrorCode());
            System.out.println("error message :" + e.GetErrorMessage());
            throw e;
        }
    }
}

The expected result is a complete query result that shows 10 access attempts from 47.100.XX.XX within one hour.

ready to get histograms from nginx-moni
log number is :10
from time is :1667875920
to time is :1667879520
is completed :true
get histograms from nginx-moni success

References