如果想将应用程序的运行日志、操作系统日志、用户日志等上传到日志服务,您可以使用日志服务Java SDK提供的PutLogs
方法。本文主要介绍使用日志服务Java SDK将日志写入到日志服务的操作步骤。
前提条件
已开通日志服务。更多信息,请参见开通日志服务。
已创建RAM用户并完成授权。具体操作,请参见创建RAM用户并完成授权。
已配置环境变量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具体操作,请参见在Linux、macOS和Windows系统配置环境变量。
重要阿里云账号的AccessKey拥有所有API的访问权限,建议您使用RAM用户的AccessKey进行API访问或日常运维。
强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
已安装日志服务Java SDK。具体操作,请参见安装Java SDK。
已创建索引。具体操作,请参见创建索引。
使用限制
普通写入&指定位置写入
@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);
后续步骤
用Java SDK查询日志,请参见使用GetLogs接口查询日志。
使用API查询日志,请参见GetLogsV2。
使用日志服务控制台查询日志,请参见查询和分析日志。
相关文档
使用Java SDK创建Project,Logstore,请参见Java SDK快速入门。
需要将日志进行压缩、批量上传日志到日志服务,请参见使用Aliyun Log Java Producer写入日志数据。
在使用Java SDK操作过程中,若服务端返回结果中包含错误信息,则表示调用接口失败。您可以参考API错误码对照表查找对应的解决方法。更多信息,请参见API错误处理对照表。