Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Log storage (PHP SDK V2)

Son Güncelleme:Oct 01, 2026

OSS, paketlerinize yapılan her istek için erişim günlükleri oluşturur. Günlük depolama özelliği, bu günlükleri sabit bir adlandırma kuralı kullanarak saatlik dosyalar halinde hedef bir pakete yazar.

Tüm örneklerde Çin (Hangzhou) bölgesi (cn-hangzhou) ve genel uç nokta kullanılır. Aynı bölgedeki başka bir Alibaba Cloud hizmetinden OSS'e erişmek için bunun yerine dahili uç noktayı kullanın. Bölgelerin ve uç noktaların tam listesi için bkz. OSS için bölgeler ve uç noktalar.

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • Her işlem için gerekli izinler: Bu izinleri bir RAM kullanıcısına vermek için bkz. RAM kullanıcısına özel ilke ekleme.

    İşlem Gerekli izin
    Günlük depolamayı etkinleştirin oss:PutBucketLogging
    Günlük depolama yapılandırmalarını görüntüleyin oss:GetBucketLogging
    Günlük depolamayı devre dışı bırakın oss:DeleteBucketLogging
    Kullanıcı tanımlı günlük alanlarını sorgulayın oss:GetUserDefinedLogFieldsConfig
  • AccessKey çiftinizle ayarlanmış OSS_ACCESS_KEY_ID ve OSS_ACCESS_KEY_SECRET ortam değişkenleri.

Kapsanan işlemler

İşlem API yöntemi Açıklama
Günlük depolamayı etkinleştirin putBucketLogging Bir paket için günlük depolamayı yapılandırır ve günlük dosyaları için hedef paketi ile ön eki ayarlar
Günlük depolama yapılandırmalarını görüntüleyin getBucketLogging Bir paket için geçerli günlük depolama yapılandırmasını döndürür
Günlük depolamayı devre dışı bırakın deleteBucketLogging Bir paketten günlük depolama yapılandırmasını kaldırır
Kullanıcı tanımlı günlük alanlarını yapılandırın putUserDefinedLogFieldsConfig Gerçek zamanlı günlüklerde yakalanacak özel istek üst bilgilerini veya sorgu parametrelerini ayarlar
Kullanıcı tanımlı günlük alanlarını sorgulayın getUserDefinedLogFieldsConfig Bir paket için geçerli kullanıcı tanımlı günlük alanı yapılandırmasını döndürür
Kullanıcı tanımlı günlük alanlarını silin deleteUserDefinedLogFieldsConfig Bir paketten kullanıcı tanımlı günlük alanı yapılandırmalarını kaldırır

Günlük depolamayı etkinleştirin

Günlük depolamayı etkinleştirmek ve OSS'in günlük dosyalarını nereye yazacağını belirtmek için PutBucketLogging yöntemini çağırın.

<?php

// Load SDK dependencies via Composer autoload.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Define command-line arguments.
$optsdesc = [
    "region"   => ['help' => 'The region in which the bucket is located.', 'required' => True],
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
    "bucket"   => ['help' => 'The name of the bucket.', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

// Load credentials from environment variables (OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

// Configure log storage: write logs to the same bucket under the "log/" prefix.
$request = new Oss\Models\PutBucketLoggingRequest(
    bucket: $bucket,
    bucketLoggingStatus: new Oss\Models\BucketLoggingStatus(
        loggingEnabled: new Oss\Models\LoggingEnabled(
            targetBucket: $bucket, // The destination bucket for log files.
            targetPrefix: 'log/'   // Prefix applied to all log file names.
        )
    )
);

$result = $client->putBucketLogging($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

Anahtar parametreler

Parametre Açıklama Örnek
targetBucket OSS'in günlük dosyalarını yazdığı paket. my-log-bucket
targetPrefix Tüm günlük dosya adlarına eklenen ön ek. Günlükleri hedef paket içinde düzenlemek için bunu kullanın. log/

Günlük depolama yapılandırmalarını görüntüleyin

Bir paket için günlük depolama yapılandırmasını almak için GetBucketLogging yöntemini çağırın.

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'The region in which the bucket is located.', 'required' => True],
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
    "bucket"   => ['help' => 'The name of the bucket.', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\GetBucketLoggingRequest(
    bucket: $bucket
);

$result = $client->getBucketLogging($request);

printf(
    'status code: '    . $result->statusCode . PHP_EOL .
    'request id: '     . $result->requestId  . PHP_EOL .
    'logging status: ' . var_export($result->bucketLoggingStatus, true) . PHP_EOL
);

Döndürülen alanlar

Alan Açıklama
statusCode HTTP yanıt durum kodu
requestId Sorun giderme için kullanılan benzersiz istek kimliği
bucketLoggingStatus targetBucket ve targetPrefix dahil olmak üzere geçerli günlük depolama yapılandırmasını içeren nesne

Günlük depolamayı devre dışı bırakın

Bir paketten günlük depolama yapılandırmasını kaldırmak için DeleteBucketLogging yöntemini çağırın. Yapılandırma silindikten sonra OSS günlük dosyası yazmayı durdurur.

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'The region in which the bucket is located.', 'required' => True],
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
    "bucket"   => ['help' => 'The name of the bucket.', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\DeleteBucketLoggingRequest(
    bucket: $bucket
);

$result = $client->deleteBucketLogging($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

Kullanıcı tanımlı günlük alanlarını yapılandırın

Gerçek zamanlı günlüklerde ek bağlam yakalamak için PutUserDefinedLogFieldsConfig yöntemini çağırın. Bu, daha sonraki analizler için OSS isteklerinden gelen belirli istek üst bilgilerini veya sorgu parametrelerini user_defined_log_fields alanında kaydetmenizi sağlar.

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'The region in which the bucket is located.', 'required' => True],
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
    "bucket"   => ['help' => 'The name of the bucket.', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

// Specify which query parameters and request headers to capture in real-time logs.
$request = new Oss\Models\PutUserDefinedLogFieldsConfigRequest(
    bucket: $bucket,
    userDefinedLogFieldsConfiguration: new Oss\Models\UserDefinedLogFieldsConfiguration(
        new Oss\Models\LoggingParamSet(parameters: ['param1', 'params2']), // Query parameters to capture.
        new Oss\Models\LoggingHeaderSet(headers: ['header1', 'header2'])   // Request headers to capture.
    )
);

$result = $client->putUserDefinedLogFieldsConfig($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

Anahtar parametreler

Parametre Sınıf Açıklama Örnek
parameters LoggingParamSet OSS isteklerinden yakalanacak sorgu parametresi adları ['param1', 'params2']
headers LoggingHeaderSet OSS isteklerinden yakalanacak istek üst bilgi adları ['header1', 'header2']

Kullanıcı tanımlı günlük alanlarını sorgulayın

Bir paket için geçerli kullanıcı tanımlı günlük alanı yapılandırmasını almak için GetUserDefinedLogFieldsConfig yöntemini çağırın.

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'The region in which the bucket is located.', 'required' => True],
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
    "bucket"   => ['help' => 'The name of the bucket.', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\GetUserDefinedLogFieldsConfigRequest(bucket: $bucket);

$result = $client->getUserDefinedLogFieldsConfig($request);

printf(
    'status code: '               . $result->statusCode . PHP_EOL .
    'request id: '                . $result->requestId  . PHP_EOL .
    'user defined log fields config: ' . var_export($result->userDefinedLogFieldsConfiguration, true)
);

Döndürülen alanlar

Alan Açıklama
statusCode HTTP yanıt durum kodu
requestId İstek için benzersiz kimlik
userDefinedLogFieldsConfiguration Yapılandırılmış LoggingParamSet (sorgu parametreleri) ve LoggingHeaderSet (istek üst bilgileri) içeren nesne

Kullanıcı tanımlı günlük alanlarını silin

Bir paketten kullanıcı tanımlı günlük alanı yapılandırmalarını kaldırmak için DeleteUserDefinedLogFieldsConfig yöntemini çağırın.

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'The region in which the bucket is located.', 'required' => True],
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False],
    "bucket"   => ['help' => 'The name of the bucket.', 'required' => True],
];

$longopts = \array_map(function ($key) { return "$key:"; }, array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: the following arguments are required: --$key, $help";
        exit(1);
    }
}

$region = $options["region"];
$bucket = $options["bucket"];

$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

$client = new Oss\Client($cfg);

$request = new Oss\Models\DeleteUserDefinedLogFieldsConfigRequest(bucket: $bucket);
$result  = $client->deleteUserDefinedLogFieldsConfig($request);

printf(
    'status code: ' . $result->statusCode . PHP_EOL .
    'request id: '  . $result->requestId
);

Sonraki adımlar