日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Java SDK快速入門

本文介紹如何快速使用日志服務(wù)Java SDK完成常見操作,包括創(chuàng)建項目(Project)、創(chuàng)建日志庫(Logstore)、寫入日志和查詢?nèi)罩镜取?/p>

前提條件

  • 已開通日志服務(wù)。更多信息,請參見開通日志服務(wù)

  • 已創(chuàng)建RAM用戶并完成授權(quán)。具體操作,請參見創(chuàng)建RAM用戶并完成授權(quán)

  • 已配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量

    重要
    • 阿里云賬號的AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶的AccessKey進行API訪問或日常運維。

    • 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號下所有資源的安全。

  • 已安裝Java開發(fā)環(huán)境。

    日志服務(wù)Java SDK支持JRE 6.0及以上的Java運行環(huán)境,您可以執(zhí)行java -version命令檢查您已安裝的Java版本。如果未安裝,可以從Java官方網(wǎng)站下載安裝包并完成安裝。

  • 已安裝日志服務(wù)Java SDK。具體操作,請參見安裝Java SDK

示例代碼

本示例中,創(chuàng)建一個SlsQuickStart.java文件,并調(diào)用接口分別完成創(chuàng)建Project、創(chuàng)建Logstore、創(chuàng)建索引、寫入日志數(shù)據(jù)和查詢?nèi)罩緮?shù)據(jù)。示例如下:

import com.aliyun.openservices.log.common.Index;
import com.aliyun.openservices.log.common.LogContent;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.common.LogStore;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetLogsResponse;
import com.aliyun.openservices.log.Client;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;

public class SlsQuickStart {
    /**
     * 本示例從環(huán)境變量中獲取AccessKey ID和AccessKey Secret。
     */
    static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    /**
     * 日志服務(wù)的服務(wù)接入點。此處以杭州為例,其它地域請根據(jù)實際情況填寫。
     */
    static String host = "cn-hangzhou.log.aliyuncs.com";
    /**
     * 創(chuàng)建日志服務(wù)Client。
     */
    static Client client = new Client(host, accessId, accessKey);
    /**
     * // Project名稱。
     */
    static String projectName = "aliyun-test-gs-project";
    /**
     * Logstore名稱。
     */
    static String logstoreName = "aliyun-test-logstore";
    /**
     * 查詢語句。
     */
    static String query = "*| select * from " + logstoreName;

    /**
     * 創(chuàng)建Project。
     *
     * @throws LogException
     * @throws InterruptedException
     */
    static void createProject() throws LogException, InterruptedException {
        String projectDescription = "project description";
        System.out.println("ready to create project");
        client.CreateProject(projectName, projectDescription);
        System.out.println(String.format("create project %s success", projectName));
        TimeUnit.SECONDS.sleep(60 * 2);
    }

    /**
     * 創(chuàng)建Logstore。
     *
     * @throws LogException
     * @throws InterruptedException
     */
    static void createLogstore() throws LogException, InterruptedException {
        System.out.println("ready to create logstore");
        int ttlInDay = 3;     // 數(shù)據(jù)保存時間。如果配置為3650,表示永久保存。單位為天。
        int shardCount = 2;   // Shard數(shù)量。
        LogStore store = new LogStore(logstoreName, ttlInDay, shardCount);
        client.CreateLogStore(projectName, store);
        System.out.println(String.format("create logstore %s success", logstoreName));
        TimeUnit.SECONDS.sleep(60);
    }

    /**
     * 為Logstore創(chuàng)建索引。
     *
     * @throws LogException
     * @throws InterruptedException
     */
    static void createIndex() throws LogException, InterruptedException {
        System.out.println(String.format("ready to create index for %s", logstoreName));
        String logstoreIndex = "{\"line\": {\"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"chn\": false}, \"keys\": {\"dev\": {\"type\": \"text\", \"token\": [\",\", \" \", \"'\", \"\\\"\", \";\", \"=\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", \"?\", \"@\", \"&\", \"<\", \">\", \"/\", \":\", \"\\n\", \"\\t\", \"\\r\"], \"caseSensitive\": false, \"alias\": \"\", \"doc_value\": true, \"chn\": false}, \"id\": {\"type\": \"long\", \"alias\": \"\", \"doc_value\": true}}, \"log_reduce\": false, \"max_text_len\": 2048}";
        Index index = new Index();
        index.FromJsonString(logstoreIndex);
        client.CreateIndex(projectName, logstoreName, index);
        System.out.println(String.format("create index for %s success", logstoreName));
        TimeUnit.SECONDS.sleep(60);
    }

    /**
     * 向Logstore寫入數(shù)據(jù)。為了提高您系統(tǒng)的IO效率,請盡量不要直接使用該方式往日志服務(wù)中寫數(shù)據(jù),此方式僅為功能舉例。在大數(shù)據(jù)、高并發(fā)場景下建議使用Aliyun Log Java Producer方式寫入日志數(shù)據(jù)。
     *
     * @throws LogException
     * @throws InterruptedException
     */
    static void pushLogs() throws LogException, InterruptedException {
        System.out.println(String.format("ready to push logs for %s", logstoreName));
        List<LogItem> logGroup = new ArrayList<LogItem>();
        for (int i = 0; i < 100; ++i) {
            LogItem logItem = new LogItem();
            logItem.PushBack("id", String.valueOf(i));
            logItem.PushBack("dev", "test_push");
            logGroup.add(logItem);
        }
        client.PutLogs(projectName, logstoreName, "", logGroup, "");
        System.out.println(String.format("push logs for %s success", logstoreName));
        TimeUnit.SECONDS.sleep(5);
    }

    /**
     * 通過SQL查詢?nèi)罩尽?     *
     * @throws LogException
     */
    static void queryLogs() throws LogException {
        System.out.println(String.format("ready to query logs from %s", logstoreName));
        // fromTime和toTime表示查詢?nèi)罩镜臅r間范圍,Unix時間戳格式。
        int fromTime = (int) (System.currentTimeMillis() / 1000 - 3600);
        int toTime = fromTime + 3600;
        GetLogsResponse getLogsResponse = client.GetLogs(projectName, logstoreName, fromTime, toTime, "", query);
        for (QueriedLog log : getLogsResponse.getLogs()) {
            for (LogContent mContent : log.mLogItem.mContents) {
                System.out.println(mContent.mKey + " : " + mContent.mValue);
            }
            System.out.println("********************");
        }
    }

    public static void main(String[] args) throws LogException, InterruptedException {
        /**
         *  創(chuàng)建Project。
         */
        createProject();
        /**
         * 創(chuàng)建Logstore。
         */
        createLogstore();
        /**
         * 創(chuàng)建索引。
         */
        createIndex();
        /**
         * 寫入日志數(shù)據(jù)。
         */
        pushLogs();
        /**
         * 查詢?nèi)罩尽?         */
        queryLogs();
    }
}

更多示例代碼,請參見Aliyun Log Java SDK

返回結(jié)果

返回結(jié)果示例如下:

ready to create project
create project aliyun-test-project success
ready to create logstore
create logstore aliyun-test-logstore success
ready to create index for aliyun-test-logstore
create index for aliyun-test-logstore success
ready to push logs for aliyun-test-logstore
push logs for aliyun-test-logstore success
ready to query logs from aliyun-test-logstore
dev : test_push
id : 0
********************
dev : test_push
id : 1
********************
dev : test_push
id : 2
********************
dev : test_push
id : 3
********************
dev : test_push
id : 4
********************
........

相關(guān)文檔

  • 在調(diào)用API接口過程中,若服務(wù)端返回結(jié)果中包含錯誤信息,則表示調(diào)用API接口失敗。您可以參考API錯誤碼對照表查找對應(yīng)的解決方法。更多信息,請參見API錯誤處理對照表

  • 阿里云OpenAPI開發(fā)者門戶提供調(diào)試、SDK、示例和配套文檔。通過OpenAPI,您無需手動封裝請求和簽名操作,就可以快速對日志服務(wù)API進行調(diào)試。更多信息,請參見OpenAPI開發(fā)者門戶

  • 為滿足越來越多的自動化日志服務(wù)配置需求,日志服務(wù)提供命令行工具CLI(Command Line Interface)。更多信息,請參見日志服務(wù)命令行工具CLI

  • 更多示例代碼,請參見Aliyun Log Java SDK on GitHub

  • 更多示例代碼,請參見Aliyun Log Python SDK on GitHub