Menulis Output Perintah ke Konsol dan Fail Log Secara Serentak
Anda mahu mengubah hala output daripada arahan ke konsol dan fail log. Kod sedia ada menghantar output ke konsol, tetapi tidak mencatatkannya. Untuk mengubah hala kedua-dua strim, gunakan teknik yang diterangkan di bawah.
Untuk mencapai matlamat anda, pertimbangkan pendekatan berikut:
Ubah hala Stdout dan Stderr kepada MultiWriter
Buat MultiWriter yang menggabungkan fail dan output standard. Kemudian, sebelum menjalankan arahan, tetapkan MultiWriter ini kepada strim Stdout dan Stderr arahan.
Contoh Kod
<code class="go">package main import ( "io" "log" "os" "os/exec" ) func main() { // Open the log file for writing f, err := os.OpenFile("log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("Error opening file: %v", err) } defer f.Close() // Create a MultiWriter that combines the log file and standard output mwriter := io.MultiWriter(f, os.Stdout) // Construct the command cmd := exec.Command("ls") // Redirect Stdout and Stderr to the MultiWriter cmd.Stdout = mwriter cmd.Stderr = mwriter // Run the command err = cmd.Run() if err != nil { panic(err) } }</code>
Kod ini membuka fail log, mencipta MultiWriter, menetapkan strim arahan kepada MultiWriter, dan menjalankan arahan. Output akan diubah hala ke konsol dan fail log dalam masa nyata dan dalam susunan yang betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Menulis Output Perintah ke Konsol dan Fail Log serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!