项目(Project)是日志服务的资源管理单元,包含Logstore、MetricStore和机器组等资源,同时也是您访问日志服务资源的入口。本文通过代码示例介绍如何创建、修改、查询、删除Project等。
前提条件
已开通日志服务。更多信息,请参见开通日志服务。
已创建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开发环境。
日志服务Java SDK支持JRE 6.0及以上的Java运行环境,您可以执行java -version命令检查您已安装的Java版本。如果未安装,可以从Java官方网站下载安装包并完成安装。
已安装日志服务Java SDK。具体操作,请参见安装Java SDK。
注意事项
本示例以华东1(杭州)的公网Endpoint为例,其公网Endpoint为https://cn-hangzhou.log.aliyuncs.com
。如果您通过与Project同地域的其他阿里云产品访问日志服务,请使用内网Endpointhttps://cn-hangzhou-intranet.log.aliyuncs.com
。关于日志服务支持的地域与Endpoint的对应关系,请参见服务入口。
创建Project示例代码
以下代码用于创建名为ali-test-project的Project。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
public class CreateProject {
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");
// 输入Project名称。
String projectName = "ali-test-project";
// 设置服务接入点。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
// 创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
// 创建Project。
try {
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));
} 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;
}
}
}
预期结果如下:
ready to create project
create project ali-test-project success
修改Project示例代码
以下代码用于修改名为ali-test-project的Project描述信息。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.UpdateProjectRequest;
public class UpdateProject {
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");
// 输入Project名称。
String projectName = "ali-test-project";
// 设置服务接入点。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
// 创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
// 修改Project。
try {
String projectDescription = "This is the new project description";
System.out.println("ready to update project");
UpdateProjectRequest request = new UpdateProjectRequest(projectName, projectDescription);
client.updateProject(request);
System.out.println(String.format("update project %s success",projectName));
} 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;
}
}
}
预期结果如下:
ready to update project
update project ali-test-project success
查询所有Project示例代码
以下代码用于查询所有Project。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.Project;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.ListProjectResponse;
public class ListProject {
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");
// 输入Project名称。
String projectName = "ali-test-project";
// 设置服务接入点。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
// 创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
// 查询所有Project。
try {
System.out.println("ready to list project");
ListProjectResponse response = client.ListProject();
for (Project project : response.getProjects()) {
System.out.println(project.getProjectName());
}
} 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;
}
}
}
预期结果如下:
ready to list project
ali-test-project
local-ide
查询指定Project示例代码
以下代码用于查询指定Project信息。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetProjectResponse;
public class GetProject {
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");
// 输入Project名称。
String projectName = "ali-test-project";
// 设置服务接入点。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
// 创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
// 查询指定Project。
try {
System.out.println("ready to get project");
GetProjectResponse response = client.GetProject(projectName);
System.out.println(String.format("get project %s success",projectName));
System.out.println("The Project description is:" + response.GetProjectDescription());
System.out.println("The Project owner info is:" + response.GetProjectOwner());
System.out.println("The Project region info is:" + response.GetProjectRegion());
System.out.println("The Project status info is:" + response.GetProjectStatus());
} 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;
}
}
}
预期结果如下:
ready to get project
get project ali-test-project success
The Project description is:project description
The Project owner is:Ownerid
The Project region is:cn-hangzhou
The Project status is:Normal
查询Project中日志示例代码
以下代码用于指定Project中指定Logstore的日志数量。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.common.QueriedLog;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.response.GetLogsResponse;
public class GetProjectLogs {
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");
// 输入Project名称。
String projectName = "ali-test-project";
// 输入Logstore名称。
String logstoreName = "ali-test-logstore";
// 设置服务接入点。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
// 创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
// 使用SQL查询指定Project中指定Logstore的日志数量。
try {
System.out.println("ready to get project logs");
String query = "SELECT COUNT(*) as pv FROM " + logstoreName + " where __time__ > 1646102500 and __time__ < 1646103400";
GetLogsResponse response = client.GetProjectLogs(projectName,query);
for (QueriedLog log: response.getLogs()) {
System.out.println(log.GetLogItem().ToJsonString());
}
} 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;
}
}
}
预期结果如下:
ready to get project logs
{"pv":"4615","logtime":1}
删除Project示例代码
以下代码用于删除名为ali-test-project的Project。
import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
public class DeleteProject {
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");
// 输入Project名称。
String projectName = "ali-test-project";
// 设置服务接入点。此处以杭州为例,其它地域请根据实际情况填写。
String host = "https://cn-hangzhou.log.aliyuncs.com";
// 创建日志服务Client。
Client client = new Client(host, accessId, accessKey);
// 删除Project。
try {
System.out.println("ready to delete project");
client.DeleteProject(projectName);
System.out.println(String.format("delete project %s success",projectName));
} 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;
}
}
}
预期结果如下:
ready to delete project
delete project ali-test-project success
相关文档
在调用API接口过程中,若服务端返回结果中包含错误信息,则表示调用API接口失败。您可以参考API错误码对照表查找对应的解决方法。更多信息,请参见API错误处理对照表。
阿里云OpenAPI开发者门户提供调试、SDK、示例和配套文档。通过OpenAPI,您无需手动封装请求和签名操作,就可以快速对日志服务API进行调试。更多信息,请参见OpenAPI开发者门户。
为满足越来越多的自动化日志服务配置需求,日志服务提供命令行工具CLI(Command Line Interface)。更多信息,请参见日志服务命令行工具CLI。
关于Project API接口说明,请参见如下:
更多示例代码,请参见Aliyun Log Java SDK on GitHub。