Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah cara saya mengubah hala Output Proses Luar ke Log di Golang dalam Masa Nyata?

Bagaimanakah cara saya mengubah hala Output Proses Luar ke Log di Golang dalam Masa Nyata?

Patricia Arquette
Patricia Arquetteasal
2024-11-06 13:38:03787semak imbas

How Do I Redirect External Process Output to Logs in Golang in Real Time?

Mengubah hala Output Proses ke Log di Golang

Apabila melaksanakan proses luaran di Golang, ia boleh menjadi sangat berharga untuk menangkap dan mencatatkan output mereka dengan segera. Semasa menunggu proses selesai dan menggunakan CombinedOutput() membenarkan pengelogan, adalah tidak praktikal untuk proses yang berjalan lama atau belum selesai.

Sebagai alternatif, menulis kepada Stdout dalam masa nyata tidak mencukupi untuk perkhidmatan yang tidak menghasilkan output kepada sebuah terminal. Satu penyelesaian ialah memanfaatkan paip untuk pengalihan keluaran yang cekap.

Menggunakan Paip untuk Pengalihan Semula

Paip mewujudkan sambungan antara proses, membolehkan pemindahan data. Untuk mengubah hala output proses ke log, ikuti langkah berikut:

  1. Penciptaan Paip: Cipta paip untuk membaca Stdout proses menggunakan StdoutPipe().
  2. Pelaksanaan Proses: Mulakan proses dengan paip yang telah ditetapkan.
  3. Bacaan Output: Baca baris keluaran paip Stdout demi baris menggunakan pengimbas penimbal.
  4. Log: Tulis setiap baris ke log yang dikehendaki dengan menggunakan log.Printf().

Menambah pengendali untuk Stderr boleh dicapai dengan mencipta goroutine untuk pengendalian serentak kedua-dua saluran output .

Contoh Pelaksanaan:

Pertimbangkan coretan kod berikut menggunakan paip untuk pengalihan semula output:

stdout, err := cmd.StdoutPipe()
if err != nil {
    return 0, err
}

if err := cmd.Start(); err != nil {
    return 0, err
}

in := bufio.NewScanner(stdout)

for in.Scan() {
    log.Printf(in.Text())
}
if err := in.Err(); err != nil {
    log.Printf("error: %s", err)
}

Dengan menggunakan pendekatan ini, anda boleh dengan berkesan tangkap dan log keluaran proses luaran tepat pada masanya, memastikan maklumat berharga tersedia untuk penyahpepijatan dan analisis.

Atas ialah kandungan terperinci Bagaimanakah cara saya mengubah hala Output Proses Luar ke Log di Golang dalam Masa Nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn