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) } }
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!