Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengalihkan Output Perintah ke Kedua-dua Konsol dan Fail Log sambil Mengekalkan Pesanan?

Bagaimana untuk Mengalihkan Output Perintah ke Kedua-dua Konsol dan Fail Log sambil Mengekalkan Pesanan?

DDD
DDDasal
2024-11-04 03:42:01147semak imbas

How to Redirect Command Output to Both Console and Log File while Maintaining Order?

Mengubah hala Output Perintah ke Konsol dan Fail Log

Untuk memaparkan dan log stdout dan stderr perintah secara serentak sambil mengekalkan susunan output, anda boleh menggunakan io perpustakaan standard .MultiWriter.

Snippet Kod

<code class="go">package main

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

func main() {
    // Logging capability
    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()
    mwriter := io.MultiWriter(f, os.Stdout)
    cmd := exec.Command("ls")
    cmd.Stderr = mwriter
    cmd.Stdout = mwriter
    err = cmd.Run() //blocks until sub process is complete
    if err != nil {
        panic(err)
    }
}</code>

Penjelasan

  1. Buka fail untuk pengelogan dan buat MultiWriter yang menggabungkan fail dan output standard.
  2. Buat arahan dan nyatakan bahawa kedua-dua stdout dan stderr harus menggunakan MultiWriter.
  3. Laksanakan arahan, yang akan mencetak output ke kedua-dua konsol dan fail log dalam masa nyata sambil mengekalkan susunan output asal .

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan Output Perintah ke Kedua-dua Konsol dan Fail Log sambil Mengekalkan Pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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