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

Patricia Arquette
Lepaskan: 2024-11-06 13:38:03
asal
804 orang telah melayarinya

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!