如果想将应用程序的运行日志、操作系统日志、用户日志等上传到日志服务,您可以使用日志服务Java SDK提供的PutLogs
方法。本文主要介绍使用日志服务Java SDK将日志写入到日志服务的操作步骤。
前提条件
使用限制
普通写入&指定位置写入
public PutLogsResponse PutLogs(String project, String logStore,
String topic, List<LogItem> logItems, String source,
String shardHash)
参数说明
参数 | 类型 | 是否必填 | 说明 |
project | String | 是 | 目标Project。 |
logStore | String | 是 | 目标Logstore。 |
topic | String | 否 | 日志主题。 |
logItems | List | 是 | 要发送的日志/日志列表。写入日志的格式为LogItem。 |
source | String | 否 | 发送源。 说明 如果留空或没有指定,该字段将被赋予producer所在宿主机的IP。 |
shardHash | String | 否 | 日志写入位置的HashID。 |
代码示例
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.LogContent;
import com.aliyun.openservices.log.common.LogItem;
import com.aliyun.openservices.log.exception.LogException;
import java.util.ArrayList;
import java.util.List;
public class PutLogsTest {
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 host = "cn-hangzhou.log.aliyuncs.com";
/**
* 创建日志服务Client。
*/
Client client = new Client(host, accessId, accessKey);
String project = "ali-peoject-test";
String logStore = "test-logstore";
String topic = "";
String source = "";
LogContent logContent = new LogContent("message", "2021-05-15 16:43:35 ParameterInvalid 400\n" +
"com.aliyun.openservices.log.exception.LogException:The body is not valid json string.\n" +
"at com.aliyun.openservices.log.Client.ErrorCheck(Client.java:2161)\n" +
"at com.aliyun.openservices.log.Client.SendData(Client.java:2312)\n" +
"at com.aliyun.openservices.log.Client.PullLogsk(Client.java:1397)\n" +
"at com.aliyun.openservices.log.Client.SendData(Client.java:2265)\n" +
"at com.aliyun.openservices.log.Client.GetCursor(Client.java:1123)\n" +
"at com.aliyun.openservices.log.Client.PullLogs(Client.java:2161)\n" +
"at com.aliyun.openservices.log.Client.ErrorCheck(Client.java:2426)\n" +
"at transformEvent.main(transformEvent.java:2559)");
List<LogItem> logItems = new ArrayList<>();
for (int i = 0; i < 5; ++i) {
LogItem logItem = new LogItem();
logItem.PushBack("language", "android");
logItem.PushBack("time", String.valueOf(System.currentTimeMillis()));
logItem.PushBack(logContent);
logItems.add(logItem);
}
client.PutLogs(project, logStore, topic, logItems, source, null);
}
}
后续步骤
用Java SDK查询日志,请参见使用GetLogs接口查询日志。
使用API查询日志,请参见GetLogsV2。
使用日志服务控制台查询日志,请参见查询与分析快速指引。
相关文档
使用Java SDK创建Project和Logstore,请参见Java SDK快速入门。
需要将日志进行压缩、批量上传日志到日志服务,请参见使用Aliyun Log Java Producer写入日志数据。
在使用Java SDK操作过程中,若服务端返回结果中包含错误信息,则表示调用接口失败。您可以参考API错误码对照表查找对应的解决方法。更多信息,请参见API错误处理对照表。
该文章对您有帮助吗?