全部产品
Search
文档中心

Object Storage Service:Penyimpanan log (PHP SDK V2)

更新时间:Mar 21, 2026

OSS menghasilkan access log untuk setiap permintaan yang dikirim ke bucket Anda. Fitur penyimpanan log menuliskan log tersebut sebagai file per jam ke bucket tujuan menggunakan konvensi penamaan tetap.

Semua contoh menggunakan wilayah China (Hangzhou) (cn-hangzhou) dengan titik akhir publik. Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Daftar lengkap wilayah dan titik akhir tersedia di Wilayah dan titik akhir untuk OSS.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Izin yang diperlukan untuk setiap operasi. Untuk memberikan izin ini kepada RAM user, lihat Lampirkan kebijakan kustom ke RAM user.

    OperasiIzin yang diperlukan
    Aktifkan penyimpanan logoss:PutBucketLogging
    Tampilkan konfigurasi penyimpanan logoss:GetBucketLogging
    Nonaktifkan penyimpanan logoss:DeleteBucketLogging
    Kueri field log yang ditentukan penggunaoss:GetUserDefinedLogFieldsConfig
  • Variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET yang telah diatur dengan pasangan Kunci Akses Anda.

Operasi yang dibahas

OperasiMetode APIDeskripsi
Aktifkan penyimpanan logputBucketLoggingMengonfigurasi penyimpanan log untuk suatu bucket dan menetapkan bucket tujuan serta awalan untuk file log
Tampilkan konfigurasi penyimpanan loggetBucketLoggingMengembalikan konfigurasi penyimpanan log saat ini untuk suatu bucket
Nonaktifkan penyimpanan logdeleteBucketLoggingMenghapus konfigurasi penyimpanan log dari suatu bucket
Konfigurasi field log yang ditentukan penggunaputUserDefinedLogFieldsConfigMenetapkan header permintaan atau parameter kueri kustom untuk ditangkap dalam log waktu nyata
Kueri field log yang ditentukan penggunagetUserDefinedLogFieldsConfigMengembalikan konfigurasi field log yang ditentukan pengguna saat ini untuk suatu bucket
Hapus field log yang ditentukan penggunadeleteUserDefinedLogFieldsConfigMenghapus konfigurasi field log yang ditentukan pengguna dari suatu bucket

Aktifkan penyimpanan log

Panggil PutBucketLogging untuk mengaktifkan penyimpanan log dan menentukan lokasi tempat OSS menulis file log.

<?php

// Muat dependensi SDK melalui autoload Composer.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan argumen command line.
$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket"   => ['help' => 'Nama 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"];

// Muat kredensial dari variabel lingkungan (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);

// Konfigurasi penyimpanan log: tulis log ke bucket yang sama dengan awalan "log/".
$request = new Oss\Models\PutBucketLoggingRequest(
    bucket: $bucket,
    bucketLoggingStatus: new Oss\Models\BucketLoggingStatus(
        loggingEnabled: new Oss\Models\LoggingEnabled(
            targetBucket: $bucket, // Bucket tujuan untuk file log.
            targetPrefix: 'log/'   // Awalan yang diterapkan pada semua nama file log.
        )
    )
);

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

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

Parameter utama

ParameterDeskripsiContoh
targetBucketBucket tempat OSS menulis file log.my-log-bucket
targetPrefixAwalan yang ditambahkan ke semua nama file log. Gunakan ini untuk mengorganisasi log dalam bucket tujuan.log/

Tampilkan konfigurasi penyimpanan log

Panggil GetBucketLogging untuk mengambil konfigurasi penyimpanan log suatu bucket.

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket"   => ['help' => 'Nama 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
);

Field yang dikembalikan

FieldDeskripsi
statusCodeKode status respons HTTP
requestIdID unik untuk permintaan, digunakan untuk troubleshooting
bucketLoggingStatusObjek yang berisi konfigurasi penyimpanan log saat ini, termasuk targetBucket dan targetPrefix

Nonaktifkan penyimpanan log

Panggil DeleteBucketLogging untuk menghapus konfigurasi penyimpanan log dari suatu bucket. OSS akan berhenti menulis file log setelah konfigurasi dihapus.

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket"   => ['help' => 'Nama 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
);

Konfigurasi field log yang ditentukan pengguna

Panggil PutUserDefinedLogFieldsConfig untuk menangkap konteks tambahan dalam log waktu nyata. Ini memungkinkan Anda mencatat header permintaan atau parameter kueri tertentu dari permintaan OSS ke dalam field user_defined_log_fields untuk analisis selanjutnya.

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket"   => ['help' => 'Nama 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);

// Tentukan parameter kueri dan header permintaan yang akan ditangkap dalam log waktu nyata.
$request = new Oss\Models\PutUserDefinedLogFieldsConfigRequest(
    bucket: $bucket,
    userDefinedLogFieldsConfiguration: new Oss\Models\UserDefinedLogFieldsConfiguration(
        new Oss\Models\LoggingParamSet(parameters: ['param1', 'params2']), // Parameter kueri yang akan ditangkap.
        new Oss\Models\LoggingHeaderSet(headers: ['header1', 'header2'])   // Header permintaan yang akan ditangkap.
    )
);

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

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

Parameter utama

ParameterKelasDeskripsiContoh
parametersLoggingParamSetNama parameter kueri yang akan ditangkap dari permintaan OSS['param1', 'params2']
headersLoggingHeaderSetNama header permintaan yang akan ditangkap dari permintaan OSS['header1', 'header2']

Kueri field log yang ditentukan pengguna

Panggil GetUserDefinedLogFieldsConfig untuk mengambil konfigurasi field log yang ditentukan pengguna saat ini untuk suatu bucket.

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket"   => ['help' => 'Nama 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)
);

Bidang yang Dikembalikan

FieldDeskripsi
statusCodeKode status respons HTTP
requestIdID unik untuk permintaan
userDefinedLogFieldsConfigurationObjek yang berisi LoggingParamSet (parameter kueri) dan LoggingHeaderSet (header permintaan) yang telah dikonfigurasi

Hapus field log yang ditentukan pengguna

Panggil DeleteUserDefinedLogFieldsConfig untuk menghapus konfigurasi field log yang ditentukan pengguna dari suatu bucket.

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => True],
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False],
    "bucket"   => ['help' => 'Nama 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
);

Langkah selanjutnya