日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

日志轉存

訪問OSS的過程中會產生大量的訪問日志。您可以通過日志轉存功能將這些日志按照固定命名規則,以小時為單位生成日志文件寫入您指定的存儲空間(Bucket)。對于已存儲的日志,您可以通過阿里云日志服務或搭建Spark集群等方式進行分析。

注意事項

  • 如果生成日志的源Bucket有地域屬性,則存儲日志的目標Bucket與源Bucket可以相同也可以不同,但是必須屬于同一賬號下的相同地域。

  • 如果生成日志的源Bucket無地域屬性,則存儲日志的目標Bucket必須與源Bucket為同一個Bucket。

  • 日志文件預計會在48小時內生成。某個時段的日志文件可能不會記錄該時段的所有請求,部分請求可能會出現在上一時段或下一時段的日志文件中。因此,某個時段的日志文件不能確保該時段日志記錄的完整性和即時性。

  • 在您關閉日志轉存功能前,OSS的日志文件會每隔1小時生成一次。請及時清理不再需要的日志文件,以減少您的存儲費用。

    您可以通過生命周期規則定期刪除日志文件。更多信息,請參見基于最后一次修改時間的生命周期規則

  • 為避免影響OSS-HDFS服務的正常使用或者引發數據污染的風險,在開通了OSS-HDFS服務的Bucket中設置日志轉存規則時,禁止將日志前綴填寫為.dlsdata/

  • OSS會根據需求在日志的尾部添加一些字段,請您在開發日志處理工具時考慮兼容性的問題。

日志文件命名規則

轉存后的日志文件命名規則如下:

<TargetPrefix><SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString

字段

說明

TargetPrefix

日志文件的文件名前綴。

SourceBucket

產生訪問日志的源Bucket名稱。

YYYY-mm-DD-HH-MM-SS

日志文件被創建的時間。從左到右分別表示:年、月、日、小時、分鐘和秒。

UniqueString

系統生成的字符串,是日志文件的唯一標識。

日志的格式和示例

  • 日志格式

    OSS的訪問日志包含請求者和被訪問資源的相關信息,格式如下:

    RemoteIP Reserved Reserved Time "RequestURL" HTTPStatus SentBytes RequestTime "Referer" "UserAgent" "HostName" "RequestID" "LoggingFlag" "RequesterAliyunID" "Operation" "BucketName" "ObjectName" ObjectSize ServerCostTime "ErrorCode" RequestLength "UserID" DeltaDataSize "SyncRequest" "StorageClass" "TargetStorageClass" "TransmissionAccelerationAccessPoint" "AccessKeyID"

    字段

    示例值

    說明

    RemoteIP

    192.168.0.1

    請求者的IP地址。

    Reserved

    -

    保留字段,固定值為-

    Reserved

    -

    保留字段,固定值為-

    Time

    03/Jan/2021:14:59:49 +0800

    OSS收到請求的時間。

    RequestURL

    GET /example.jpg HTTP/1.0

    包含query string的請求URL。

    OSS會忽略以x-開頭的query string參數,但這個參數會被記錄在訪問日志中。所以您可以使用x-開頭query string參數標記一個請求,然后使用這個標記快速查找該請求對應的日志。

    HTTPStatus

    200

    OSS返回的HTTP狀態碼。

    SentBytes

    999131

    請求產生的下行流量。單位:Byte。

    RequestTime

    127

    完成本次請求耗費的時間。單位:ms。

    Referer

    http://www.aliyun.com/product/oss

    請求的HTTP Referer。

    UserAgent

    curl/7.15.5

    HTTP的User-Agent頭。

    HostName

    examplebucket.oss-cn-hangzhou.aliyuncs.com

    請求訪問的目標域名。

    RequestID

    5FF16B65F05BC932307A3C3C

    請求的Request ID。

    LoggingFlag

    true

    是否已開啟日志轉存。取值如下:

    • true表示已開啟日志轉存。

    • false表示未開啟日志轉存。

    RequesterAliyunID

    16571836914537****

    請求者的用戶ID。取值-表示匿名訪問。

    Operation

    GetObject

    請求類型。

    BucketName

    examplebucket

    請求的目標Bucket名稱。

    ObjectName

    example.jpg

    請求的目標Object名稱。

    ObjectSize

    999131

    目標Object大小。單位:Byte。

    ServerCostTime

    88

    OSS處理本次請求所花的時間。單位:毫秒。

    ErrorCode

    -

    OSS返回的錯誤碼。取值-表示未返回錯誤碼。

    RequestLength

    302

    請求的長度。單位:Byte。

    UserID

    16571836914537****

    Bucket擁有者ID。

    DeltaDataSize

    -

    Object大小的變化量。取值-表示此次請求不涉及Object的寫入操作。

    SyncRequest

    cdn

    請求是否為CDN回源請求。取值如下:

    • cdn表示請求是CDN回源請求。

    • -表示請求不是CDN回源請求。

    StorageClass

    Standard

    目標Object的存儲類型。取值如下:

    • Standard:標準存儲。

    • IA:低頻訪問存儲。

    • Archive:歸檔存儲。

    • Cold Archive:冷歸檔存儲。

    • DeepCold Archive:深度冷歸檔存儲。

    • -:未獲取到Object存儲類型。

    TargetStorageClass

    -

    是否通過生命周期規則或CopyObject轉換了Object的存儲類型。取值如下:

    • Standard:轉換為標準存儲。

    • IA:轉換為低頻訪問存儲。

    • Archive:轉換為歸檔存儲。

    • Cold Archive:轉換為冷歸檔存儲。

    • DeepCold Archive:轉換為深度冷歸檔存儲。

    • -:不涉及Object存儲類型轉換操作。

    TransmissionAccelerationAccessPoint

    -

    通過傳輸加速域名訪問目標Bucket時使用的傳輸加速接入點。例如請求者通過華東1(杭州)的接入點訪問目標Bucket時,值為cn-hangzhou

    取值-表示未使用傳輸加速域名或傳輸加速接入點與目標Bucket所在地域相同。

    AccessKeyID

    LTAI4FrfJPUSoKm4JHb5****

    請求者的AccessKey ID。

    • 通過控制臺的方式發起請求時,日志字段中會顯示為以TMP開頭的臨時AccessKey ID。

    • 通過工具、SDK以長期密鑰的方式發起請求時,日志字段中顯示為常見的AccessKey ID,示例值為LTAI4FrfJPUSoKm4JHb5****

    • 通過STS臨時訪問憑證發起請求時,顯示為以STS開頭的臨時AccessKey ID。

    說明

    AccessKey ID字段顯示為-,表示匿名請求。

  • 日志示例

    192.168.0.1 - - [03/Jan/2021:14:59:49 +0800] "GET /example.jpg HTTP/1.0" 200 999131 127 "http://www.aliyun.com/product/oss" "curl/7.15.5" "examplebucket.oss-cn-hangzhou.aliyuncs.com" "5FF16B65F05BC932307A3C3C" "true" "16571836914537****" "GetObject" "examplebucket" "example.jpg" 999131 88 "-" 302 "16571836914537****" - "cdn" "standard" "-" "-" "LTAI4FrfJPUSoKm4JHb5****"

    日志文件轉存到OSS指定Bucket后,您可以通過日志服務對日志文件進行分析。對日志文件進行分析前,您需要通過數據導入方式將OSS日志文件導入到日志服務。有關數據導入的具體操作,請參見導入OSS數據。有關日志服務分析功能的更多信息,請參見分析概述

操作步驟

使用OSS控制臺

  1. 登錄OSS管理控制臺

  2. 單擊Bucket 列表,然后單擊目標Bucket名稱。

  3. 在左側導航欄,選擇日志管理 > 日志轉存

  4. 日志轉存頁面,開啟日志存儲,并設置日志存儲位置及日志前綴。

    • 日志存儲位置:下拉選擇存儲日志記錄的Bucket名稱,只能選擇同一賬號下相同地域的Bucket。

    • 日志前綴:日志文件存儲的目錄。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。例如,日志前綴指定為log/,則日志文件將被記錄在log/目錄下。

  5. 單擊保存

使用阿里云SDK

以下僅列舉常見SDK的設置日志轉存的代碼示例。關于其他SDK的設置日志轉存的代碼示例,請參見SDK簡介

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.SetBucketLoggingRequest;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填寫待開啟日志轉存功能的Bucket名稱,例如examplebucket。
        String bucketName = "examplebucket";
        // 填寫存放日志文件的目標Bucket。targetBucketName與bucketName可以為相同或不同的Bucket。
        String targetBucketName = "yourTargetBucketName";
        // 設置日志文件存儲的目錄為log/。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。
        String targetPrefix = "log/";

        // 創建OSSClient實例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            SetBucketLoggingRequest request = new SetBucketLoggingRequest(bucketName);
            request.setTargetBucket(targetBucketName);
            request.setTargetPrefix(targetPrefix);
            ossClient.setBucketLogging(request);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。 
$provider = new EnvironmentVariableCredentialsProvider();
// yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "yourEndpoint";
// 填寫待開啟日志轉存功能的Bucket名稱,例如examplebucket。
$bucket= "examplebucket";

$option = array();
// 設置存放日志文件的目標Bucket。
$targetBucket = "destbucket";
// 設置日志文件存儲的目錄。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。
$targetPrefix = "log/";

try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
    );
    $ossClient = new OssClient($config);

    // 開啟日志轉存。
    $ossClient->putBucketLogging($bucket, $targetBucket, $targetPrefix, $option);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");            
const OSS = require('ali-oss')
const client = new OSS({
  // yourregion填寫Bucket所在地域。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  // yourbucketname填寫存儲空間名稱。
  bucket: 'yourbucketname'
});
async function putBucketLogging () {
  try {
     const result = await client.putBucketLogging('bucket-name', 'logs/');
     console.log(result)
  } catch (e) {
    console.log(e)
  }
}
putBucketLogging();
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import BucketLogging

# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
# 填寫Bucket名稱,例如examplebucket。    
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 將日志文件保存在當前Bucket。
# 設置日志文件存儲的目錄為log/。如果指定此項,則日志文件將保存在Bucket的指定目錄下。如果不指定此項,則日志文件將保存在Bucket的根目錄下。
# 開啟日志轉存功能。
logging = bucket.put_bucket_logging(BucketLogging(bucket.bucket_name, 'log/'))
if logging.status == 200:
    print("Enable access logging")
else:
    print("request_id :", logging.request_id)
    print("resp : ", logging.resp.response)            
using Aliyun.OSS;
using Aliyun.OSS.Common;

// 填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// 填寫待開啟日志轉存功能的Bucket名稱,例如examplebucket。
var bucketName = "examplebucket";
// 填寫存放日志文件的目標Bucket。targetBucketName與bucketName可以為相同或不同的Bucket。
var targetBucketName = "destbucket";
// 創建OssClient實例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
    // 設置日志文件存儲的目錄為log/。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。
    var request = new SetBucketLoggingRequest(bucketName, targetBucketName, "log/");
    // 開啟日志轉存功能。
    client.SetBucketLogging(request);
    Console.WriteLine("Set bucket:{0} Logging succeeded ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error info: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}
PutBucketLoggingRequest request = new PutBucketLoggingRequest();
// 指定要開啟訪問日志記錄的源Bucket。
request.setBucketName("yourSourceBucketName");
// 指定存儲訪問日志的目標Bucket。
// 目標Bucket和源Bucket必須屬于同一地域。源Bucket和目標Bucket可以是同一個Bucket,也可以是不同的Bucket。
request.setTargetBucketName("yourTargetBucketName");
// 設置日志文件存放的目錄。
request.setTargetPrefix("<yourTargetPrefix>");

OSSAsyncTask task = oss.asyncPutBucketLogging(request, new OSSCompletedCallback<PutBucketLoggingRequest, PutBucketLoggingResult>() {
    @Override
    public void onSuccess(PutBucketLoggingRequest request, PutBucketLoggingResult result) {
        OSSLog.logInfo("code::"+result.getStatusCode());
    }

    @Override
    public void onFailure(PutBucketLoggingRequest request, ClientException clientException, ServiceException serviceException) {
         OSSLog.logError("error: "+serviceException.getRawMessage());
    }
});
task.waitUntilFinished();
package main

import (
    "fmt"
    "os"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創建OSSClient實例。
    // yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider)) 
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    // 填寫待開啟日志轉存功能的Bucket名稱,例如examplebucket。
    bucketName := "examplebucket"
    // 填寫存放日志文件的目標Bucket。targetBucketName與bucketName必須處于相同地域,可以是相同或不同的Bucket。
    targetBucketName := "destbucket"
    // 設置日志文件存儲的目錄為log/。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。
    targetPrefix := "log/"

    // 開啟日志轉存功能。
    err = client.SetBucketLogging(bucketName, targetBucketName, targetPrefix, true)
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}            
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* 初始化OSS賬號信息。*/
            
    /* yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
    std::string Endpoint = "yourEndpoint";
    /* 填寫待開啟日志轉存功能的Bucket名稱,例如examplebucket。*/
    std::string BucketName = "examplebucket";
    /* 填寫存放日志文件的目標Bucket。targetBucketName與bucketName可以為相同或不同的Bucket。*/
    std::string TargetBucketName = "destbucket";
    /* 設置日志文件存儲的目錄為log/。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。*/
    std::string TargetPrefix  ="log/";

    /* 初始化網絡等資源。*/
    InitializeSdk();

    ClientConfiguration conf;
    /* 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);  

    /* 開啟日志轉存功能。*/
    SetBucketLoggingRequest request(BucketName, TargetBucketName, TargetPrefix);
    auto outcome = client.SetBucketLogging(request);

    if (!outcome.isSuccess()) {
        /* 異常處理。*/
        std::cout << "SetBucketLogging fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* 釋放網絡等資源。*/
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。*/
const char *endpoint = "yourEndpoint";
/* 填寫Bucket名稱,例如examplebucket。*/
const char *bucket_name = "examplebucket";
/* 填寫存放日志文件的目標Bucket。targetBucketName與bucketName可以為相同或不同的Bucket。*/
const char *target_bucket_name = "yourTargetBucketName";
/* 設置日志文件存儲的目錄。如果指定此項,則日志文件將保存在目標Bucket的指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。*/
const char *target_logging_prefix = "yourTargetPrefix";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* 用char*類型的字符串初始化aos_string_t類型。*/
    aos_str_set(&options->config->endpoint, endpoint);
    /* 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。*/
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    /* 是否使用了CNAME。0表示不使用。*/
    options->config->is_cname = 0;
    /* 用于設置網絡相關參數,比如超時時間等。*/
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* 在程序入口調用aos_http_io_initialize方法來初始化網絡、內存等全局資源。*/
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* 用于內存管理的內存池(pool), 等價于apr_pool_t。其實現代碼在apr庫中。*/
    aos_pool_t *pool;
    /* 重新創建一個內存池,第二個參數是NULL,表示沒有繼承其它內存池。*/
    aos_pool_create(&pool, NULL);
    /* 創建并初始化options,該參數包括endpoint、access_key_id、acces_key_secret、is_cname、curl等全局配置信息。*/
    oss_request_options_t *oss_client_options;
    /* 在內存池中分配內存給options。*/
    oss_client_options = oss_request_options_create(pool);
    /* 初始化Client的選項oss_client_options。*/
    init_options(oss_client_options);
    /* 初始化參數 */
    aos_string_t bucket;
    oss_logging_config_content_t *content;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    content = oss_create_logging_rule_content(pool);
    aos_str_set(&content->target_bucket, target_bucket_name);
    aos_str_set(&content->prefix, target_logging_prefix);
    /* 開啟存儲空間的訪問日志記錄。*/
    resp_status = oss_put_bucket_logging(oss_client_options, &bucket, content, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("put bucket logging succeeded\n");
    } else {
        printf("put bucket logging failed, code:%d, error_code:%s, error_msg:%s, request_id:%s\n",
            resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id); 
    }
    /* 釋放內存池,相當于釋放了請求過程中各資源分配的內存。*/
    aos_pool_destroy(pool);
    /* 釋放之前分配的全局資源。*/
    aos_http_io_deinitialize();
    return 0;
}
require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# 填寫Bucket名稱,例如examplebucket。
bucket = client.get_bucket('examplebucket')
# logging_bucket填寫存放日志文件的目標Bucket。
# my-log填寫日志文件存儲的目錄,如果指定此項,則日志文件將保存在指定目錄下。如果不指定此項,則日志文件將保存在目標Bucket的根目錄下。
bucket.logging = Aliyun::OSS::BucketLogging.new(
  enable: true, target_bucket: 'logging_bucket', target_prefix: 'my-log')

使用命令行工具ossutil

關于使用ossutil設置日志轉存的具體操作, 請參見開啟日志轉存

使用REST API

如果您的程序自定義要求較高,您可以直接發起REST API請求。直接發起REST API請求需要手動編寫代碼計算簽名。更多信息,請參見PutBucketLogging

常見問題

中斷的請求能否在OSS訪問日志中查詢?

OSS訪問日志目前不會記錄中斷的請求。如果您是通過SDK發起的請求,可以根據SDK的返回值判斷請求中斷的原因。