Bagaimana untuk Mengalihkan Output Pelaksanaan kepada Logger dalam Masa Nyata dalam Go?

Barbara Streisand
Lepaskan: 2024-11-08 01:59:02
asal
961 orang telah melayarinya

How to Redirect Execution Output to a Logger in Real-time in Go?

Mengubah hala Output Pelaksanaan kepada Logger dalam Go

Dalam Go, pakej exec menyediakan mekanisme untuk melaksanakan arahan luaran. Walaupun kaedah CombinedOutput boleh menangkap keseluruhan output setelah arahan selesai, ia mungkin tidak sesuai untuk proses yang berjalan lama atau belum selesai.

Untuk mengubah hala output arahan kepada pembalak dalam masa nyata, lebih pendekatan yang fleksibel diperlukan. Satu teknik melibatkan penggunaan paip untuk menyambungkan output arahan kepada pembalak.

Berikut ialah contoh coretan kod:

import (
    "bufio"
    "log"
    "os/exec"
)

func main() {
    cmd := exec.Command("yes")

    // Create a pipe to connect the command's stdout to the logger
    stdout, err := cmd.StdoutPipe()
    if err != nil {
        log.Fatalf("Failed to create stdout pipe: %v", err)
    }

    // Start the command
    if err := cmd.Start(); err != nil {
        log.Fatalf("Failed to start command: %v", err)
    }

    // Create a buffered reader to read the output line by line
    in := bufio.NewScanner(stdout)

    // Read the output and log it in real-time
    for in.Scan() {
        log.Printf(in.Text())
    }

    if err := in.Err(); err != nil {
        log.Printf("Error reading command output: %v", err)
    }
}
Salin selepas log masuk

Dalam contoh ini, aliran Stderr juga boleh dikendalikan secara serentak dengan mencipta goroutine yang berasingan. Dengan menyalurkan output arahan kepada pembalak, pembangun boleh menangkap dan log keluaran masa nyatanya, menjadikannya lebih mudah untuk memantau dan menyelesaikan masalah proses dalam aplikasi mereka.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Output Pelaksanaan kepada Logger dalam Masa Nyata dalam Go?. 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