Logging (Java SDK V2)

更新时间:
复制 MD 格式

When logging is enabled, OSS generates hourly access logs for a vector bucket, creates log files based on a fixed naming convention, and writes them to a specified target bucket. You can use the OSS Java SDK V2 to enable, view, and disable logging for a vector bucket.

Note

To manage logging for a vector bucket, you must use the vector client (OSSVectorsClient) and configure the account ID (accountId). The Java SDK V2 does not provide a strongly-typed interface for vector logging, so the following examples use the generic invokeOperation call.

Permissions

An Alibaba Cloud account has full permissions by default. To allow RAM users or RAM roles to perform the following operations, grant permissions by using a RAM policy or a bucket policy.

API

Action

Description

PutBucketLogging

oss:PutBucketLogging

Enables logging for a vector bucket and stores access logs in a specified target bucket.

GetBucketLogging

oss:GetBucketLogging

Queries the logging configuration of a vector bucket.

DeleteBucketLogging

oss:DeleteBucketLogging

Disables logging for a vector bucket.

Enable logging

Enable logging for a vector bucket to store access logs in the target bucket (TargetBucket) under the specified prefix (TargetPrefix). The request body is in JSON format. TargetBucket must be in the same account and you must have write permissions on it.

import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;

public class PutBucketLoggingSample {
    public static void main(String[] args) throws Exception {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {
            String loggingConfig = "{\n"
                    + "  \"BucketLoggingStatus\": {\n"
                    + "    \"LoggingEnabled\": {\n"
                    + "      \"TargetBucket\": \"targetbucket\",\n"
                    + "      \"TargetPrefix\": \"log/\"\n"
                    + "    }\n"
                    + "  }\n"
                    + "}";
            Map<String, String> headers = new HashMap<>();
            headers.put("Content-Type", "application/json");
            Map<String, String> parameters = new HashMap<>();
            parameters.put("logging", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("PutBucketLogging")
                    .method("PUT")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .headers(headers)
                    .body(BinaryData.fromString(loggingConfig))
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

Get logging configuration

Retrieve the current logging configuration of a vector bucket.

import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;

public class GetBucketLoggingSample {
    public static void main(String[] args) throws Exception {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {
            Map<String, String> parameters = new HashMap<>();
            parameters.put("logging", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("GetBucketLogging")
                    .method("GET")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

Disable logging

Disable logging for a vector bucket.

import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.OperationInput;
import com.aliyun.sdk.service.oss2.OperationOptions;
import com.aliyun.sdk.service.oss2.OperationOutput;
import com.aliyun.sdk.service.oss2.transport.BinaryData;
import java.util.HashMap;
import java.util.Map;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;

public class DeleteBucketLoggingSample {
    public static void main(String[] args) throws Exception {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {
            Map<String, String> parameters = new HashMap<>();
            parameters.put("logging", "");
            OperationInput input = OperationInput.newBuilder()
                    .opName("DeleteBucketLogging")
                    .method("DELETE")
                    .bucket("examplebucket")
                    .parameters(parameters)
                    .build();
            OperationOutput output = client.invokeOperation(input, OperationOptions.defaults());
            System.out.println("status code: " + output.statusCode()
                    + ", request id: " + output.headers().get("x-oss-request-id"));
        }
    }
}

References

  • For more information about log fields and log file naming conventions, see the OSS logging documentation.