Bagaimana untuk Mengalihkan Output Perintah Exec ke Log Masuk Masa Nyata Anda di Golang?

Patricia Arquette
Lepaskan: 2024-11-17 12:38:01
asal
467 orang telah melayarinya

How to Redirect Exec Command Output to Your Log in Real Time in Golang?

Golang: Menyalin Output Exec ke Log

Masalah:

Apabila melaksanakan proses menggunakan exec.Command, bagaimana boleh anda mengubah hala outputnya ke log masuk anda masa nyata?

Konteks:

Pendekatan konvensional menunggu proses selesai dan kemudian mengelog keluaran gabungannya tidak sesuai untuk proses yang berjalan lama atau belum selesai . Menulis kepada stdout dalam masa nyata juga tidak berguna untuk perkhidmatan yang tidak menggunakan terminal.

Penyelesaian:

Untuk menangkap dan mencatatkan output proses dalam masa nyata , anda boleh menggunakan paip:

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

// Start the command after setting up the pipe
if err := cmd.Start(); err != nil {
    return 0, err
}

// Read the command's stdout line by line
in := bufio.NewScanner(stdout)

for in.Scan() {
    log.Printf(in.Text()) // Log each line
}

if err := in.Err(); err != nil {
    log.Printf("error: %s", err)
}
Salin selepas log masuk

Pendekatan ini membolehkan anda menangkap kedua-dua stdout dan stderr dengan menggunakan goroutine.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Output Perintah Exec ke Log Masuk Masa Nyata Anda di Golang?. 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