全部产品
Search
文档中心

Object Storage Service:Penyimpanan log (Go SDK V2)

更新时间:Nov 09, 2025

Banyak log akses dihasilkan saat Anda mengakses OSS. Anda dapat menggunakan fitur penyimpanan log untuk menghasilkan file log per jam berdasarkan konvensi penamaan tetap dan menuliskannya ke bucket yang ditentukan.

Catatan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou untuk Wilayah China (Hangzhou). Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket dari layanan Alibaba Cloud lainnya di wilayah yang sama, disarankan untuk menggunakan titik akhir internal. Untuk daftar Wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.

  • Dalam topik ini, kredensial akses dibaca dari variabel lingkungan. Untuk informasi lebih lanjut tentang konfigurasi kredensial akses, lihat Konfigurasikan Kredensial Akses.

  • Untuk mengaktifkan penyimpanan log, Anda memerlukan izin oss:PutBucketLogging. Untuk melihat konfigurasi penyimpanan log, Anda memerlukan izin oss:GetBucketLogging. Untuk menonaktifkan penyimpanan log, Anda memerlukan izin oss:DeleteBucketLogging. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.

Kode contoh

Aktifkan penyimpanan log

Kode berikut menunjukkan cara mengaktifkan fitur penyimpanan log.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mengaktifkan fitur penyimpanan log untuk bucket.
	putRequest := &oss.PutBucketLoggingRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan nama bucket untuk mana Anda ingin mengaktifkan fitur penyimpanan log.
		BucketLoggingStatus: &oss.BucketLoggingStatus{
			LoggingEnabled: &oss.LoggingEnabled{
				TargetBucket: oss.Ptr("TargetBucket"), // Tentukan bucket tujuan untuk menyimpan file log. Bucket tujuan dan bucket sumber harus berada di wilayah yang sama. Mereka bisa menjadi bucket yang sama atau bucket yang berbeda.
				TargetPrefix: oss.Ptr("log"),          // Tentukan direktori tempat file log disimpan. Jika Anda menentukan parameter ini, file log akan disimpan di direktori tertentu dari bucket tujuan. Jika Anda tidak menentukan parameter ini, file log akan disimpan di direktori root bucket tujuan.
			},
		},
	}

	// Eksekusi permintaan untuk mengaktifkan fitur penyimpanan log untuk bucket.
	putResult, err := client.PutBucketLogging(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("gagal memasukkan logging bucket %v", err)
	}

	// Cetak hasil pengaktifan fitur penyimpanan log untuk bucket.
	log.Printf("hasil logging bucket:%#v\n", putResult)
}

Lihat konfigurasi penyimpanan log

Kode berikut menunjukkan cara melihat konfigurasi penyimpanan log.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mendapatkan konfigurasi penyimpanan log bucket.
	getRequest := &oss.GetBucketLoggingRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Eksekusi operasi untuk mendapatkan konfigurasi penyimpanan log bucket dan proses hasilnya.
	getResult, err := client.GetBucketLogging(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("gagal mendapatkan logging bucket %v", err)
	}

	// Cetak hasil mendapatkan konfigurasi penyimpanan log bucket.
	log.Printf("hasil logging bucket target bucket:%#v\n", getResult.BucketLoggingStatus.LoggingEnabled.TargetBucket)
}

Nonaktifkan penyimpanan log

Kode berikut menunjukkan cara menonaktifkan fitur penyimpanan log.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menonaktifkan fitur penyimpanan log untuk bucket.
	delRequest := &oss.DeleteBucketLoggingRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Eksekusi operasi untuk menonaktifkan fitur penyimpanan log untuk bucket dan proses hasilnya.
	delResult, err := client.DeleteBucketLogging(context.TODO(), delRequest)
	if err != nil {
		log.Fatalf("gagal menghapus logging bucket %v", err)
	}

	// Cetak hasil menonaktifkan fitur penyimpanan log untuk bucket.
	log.Printf("hasil menghapus logging bucket:%#v\n", delResult)
}

Konfigurasikan field log kustom

Anda dapat memanggil operasi PutUserDefinedLogFieldsConfig untuk mengonfigurasi bidang user_defined_log_fields dalam log waktu nyata sebuah bucket. Bidang ini dapat digunakan untuk mencatat header permintaan atau parameter kueri tertentu dari permintaan OSS untuk analisis lebih lanjut.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel parameter baris perintah.
var (
	region     string // Wilayah tempat bucket OSS berada.
	bucketName string // Nama bucket yang akan dioperasikan.
)

// Fungsi init digunakan untuk menginisialisasi parsing parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah parameter wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default, dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat instance klien OSS.
	client := oss.NewClient(cfg)

	// Konstruksi permintaan PutUserDefinedLogFieldsConfig.
	request := &oss.PutUserDefinedLogFieldsConfigRequest{
		Bucket: oss.Ptr(bucketName), // Atur nama bucket tujuan.
		UserDefinedLogFieldsConfiguration: &oss.UserDefinedLogFieldsConfiguration{
			HeaderSet: &oss.LoggingHeaderSet{
				Headers: []string{"header1", "header2"}, // Field header HTTP yang akan dicatat dalam log kustom.
			},
			ParamSet: &oss.LoggingParamSet{
				Parameters: []string{"param"}, // Field parameter URL yang akan dicatat dalam log kustom.
			},
		},
	}

	// Ajukan permintaan dan dapatkan hasilnya.
	result, err := client.PutUserDefinedLogFieldsConfig(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal memasukkan konfigurasi bidang log kustom %v", err)
	}

	// Keluarkan isi respons sukses.
	log.Printf("hasil konfigurasi bidang log kustom:%#v\n", result)
}

Kueri bidang log kustom

Anda dapat memanggil operasi GetUserDefinedLogFieldsConfig untuk mengambil konfigurasi kustom dari bidang user_defined_log_fields dalam log waktu nyata sebuah bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel parameter baris perintah.
var (
	region     string // Wilayah tempat bucket OSS berada.
	bucketName string // Nama bucket yang akan dioperasikan.
)

// Fungsi init digunakan untuk menginisialisasi parsing parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah parameter wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default, dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat instance klien OSS.
	client := oss.NewClient(cfg)

	// Konstruksi permintaan GetUserDefinedLogFieldsConfig.
	getRequest := &oss.GetUserDefinedLogFieldsConfigRequest{
		Bucket: oss.Ptr(bucketName), // Atur nama bucket tujuan.
	}

	// Ajukan permintaan dan dapatkan hasilnya.
	getResult, err := client.GetUserDefinedLogFieldsConfig(context.TODO(), getRequest)
	if err != nil {
		// Jika terjadi kesalahan, cetak pesan kesalahan dan keluar.
		log.Fatalf("gagal mendapatkan konfigurasi bidang log kustom %v", err)
	}

	// Keluarkan isi respons sukses.
	log.Printf("hasil konfigurasi bidang log kustom:%#v\n", getResult)
}

Hapus bidang log kustom

Anda dapat memanggil operasi DeleteUserDefinedLogFieldsConfig untuk menghapus konfigurasi kustom dari bidang user_defined_log_fields dalam log waktu nyata sebuah bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel parameter baris perintah.
var (
	region     string // Wilayah tempat bucket OSS berada.
	bucketName string // Nama bucket yang akan dioperasikan.
)

// Fungsi init digunakan untuk menginisialisasi parsing parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah parameter wilayah telah diberikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default, dan atur penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat instance klien OSS.
	client := oss.NewClient(cfg)

	// Konstruksi permintaan DeleteUserDefinedLogFieldsConfig.
	request := &oss.DeleteUserDefinedLogFieldsConfigRequest{
		Bucket: oss.Ptr(bucketName), // Atur nama bucket tujuan.
	}

	// Ajukan permintaan dan dapatkan hasilnya.
	result, err := client.DeleteUserDefinedLogFieldsConfig(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menghapus konfigurasi bidang log kustom %v", err)
	}

	// Keluarkan isi respons sukses.
	log.Printf("hasil menghapus konfigurasi bidang log kustom:%#v\n", result)
}

Referensi

  • Untuk informasi lebih lanjut tentang operasi API untuk mengaktifkan fitur penyimpanan log, lihat PutBucketLogging.

  • Untuk informasi lebih lanjut tentang operasi API untuk melihat konfigurasi penyimpanan log, lihat GetBucketLogging.

  • Untuk informasi lebih lanjut tentang operasi API untuk menonaktifkan fitur penyimpanan log, lihat DeleteBucketLogging.

  • Untuk informasi lebih lanjut tentang operasi API untuk mengonfigurasi field log kustom, lihat PutUserDefinedLogFieldsConfig.

  • Untuk informasi lebih lanjut tentang operasi API untuk mengkueri field log kustom, lihat GetUserDefinedLogFieldsConfig.

  • Untuk informasi lebih lanjut tentang operasi API untuk menghapus field log kustom, lihat DeleteUserDefinedLogFieldsConfig.