使用Java SDK写入日志

如果想将应用程序的运行日志、操作系统日志、用户日志等上传到日志服务,您可以使用日志服务Java SDK提供的PutLogs方法。本文主要介绍使用日志服务Java SDK将日志写入到日志服务的操作步骤。

前提条件

  • 已开通日志服务。更多信息,请参见开通日志服务

  • 已创建RAM用户并完成授权。具体操作,请参见创建RAM用户并完成授权

  • 已配置环境变量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具体操作,请参见在Linux、macOS和Windows系统配置环境变量

    重要
    • 阿里云账号的AccessKey拥有所有API的访问权限,建议您使用RAM用户的AccessKey进行API访问或日常运维。

    • 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。

  • 已安装日志服务Java SDK。具体操作,请参见安装Java SDK

  • 已创建索引。具体操作,请参见创建索引

使用限制

  • aliyun-log-producer底层调用PutLogs接口上传日志,每次可以写入的原始日志大小存在限制。更多信息,请参见数据读写

  • 日志服务的基础资源,包括创建Project个数、Logstore个数、Shard个数、LogtailConfig个数、机器组个数、单个LogItem大小、LogItem(Key)长度和LogItem(Value)长度等均存在限制。更多信息,请参见基础资源

  • 代码首次运行后,请在日志服务控制台开启日志库索引,等待一分钟后,进行查询。

  • 在控制台进行日志查询时,当单个字段值长度超过最大长度时,超出部分被截断,不参与分析。更多信息,请参考创建索引

普通写入&指定位置写入

@override
public PutLogsResponse PutLogs(project, logstore, logItem, topic, source, shardHash)

参数说明

参数

类型

是否必填

说明

project

String

目标Project。

logstore

String

目标LogStore。

logItem

List

要发送的日志/日志列表。写入日志的格式为LogItem

topic

String

日志主题。

说明

如果留空或没有指定,该字段将被赋予""。

source

String

发送源。

说明

如果留空或没有指定,该字段将被赋予producer所在宿主机的IP。

shardHash

String

日志写入位置的HashID。

代码示例

    /**
     * 本示例从环境变量中获取AccessKey ID和AccessKey Secret。
     */
     String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    /**
     * 日志服务的服务接入点。此处以成都为例,其它地域请根据实际情况填写。
     */
     String host = "cn-chengdu.log.aliyuncs.com";
    /**
     * 创建日志服务Client。
     */
     Client client = new Client(host, accessId, accessKey);


     List<LogItem> logGroup = new ArrayList<LogItem>();
     for (int i = 0; i < 5; ++i) {
        LogItem logItem = new LogItem();
        logItem.PushBack("language", "android");
        logItem.PushBack("time", String.valueOf(System.currentTimeMillis()));
        logGroup.add(logItem);
     }

     /**
      * // Project名称。
      */
     String projectName = "your-project-name";
     /**
      * Logstore名称。
      */
     String logstoreName = "your-logstore-name";
     client.PutLogs(projectName, logstoreName, topic, logGroup, source);

后续步骤

相关文档