Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengasingkan Log mengikut Tahap Keterukan Menggunakan uber-go/zap?

Bagaimana untuk Mengasingkan Log mengikut Tahap Keterukan Menggunakan uber-go/zap?

Susan Sarandon
Susan Sarandonasal
2024-10-25 08:59:29554semak imbas

How to Separate Logs by Severity Level Using uber-go/zap?

Cara Mengeluarkan Log ke stdout dan stderr Berdasarkan Tahap Log Menggunakan uber-go/zap

Untuk memisahkan log berdasarkan tahap keterukan dalam uber-go/zap, gunakan konsep teras zapcore "tee-ing". Pendekatan ini memanfaatkan teras tee yang menggabungkan dua teras bebas, masing-masing dengan pemboleh tahap tertentu.

Pelaksanaan:

  1. Tentukan Pemboleh Tahap:

    <code class="go">infoLevel := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
     return level == zapcore.InfoLevel
    })
    
    errorFatalLevel := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
     return level == zapcore.ErrorLevel || level == zapcore.FatalLevel
    })</code>
  2. Sediakan Penyegerak Tulis:

    <code class="go">stdoutSyncer := zapcore.Lock(os.Stdout)
    stderrSyncer := zapcore.Lock(os.Stderr)</code>
  3. Bina Teras Tee:

    <code class="go">core := zapcore.NewTee(
     zapcore.NewCore(
         zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
         stdoutSyncer,
         infoLevel,
     ),
     zapcore.NewCore(
         zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
         stderrSyncer,
         errorFatalLevel,
     ),
    )</code>
  4. Buat Logger:

    <code class="go">logger := zap.New(core)</code>

Demonstrasi:

<code class="go">logger.Info("info log")
logger.Error("error log")</code>

Ujian:
Ubah hala stdout atau stderr ke /dev/null untuk mengesahkan bahawa log maklumat dicetak ke stdout dan log ralat ke stderr:

$ go build main.go

$ ./main 2>/dev/null # displays only stdout logs
{&quot;level&quot;:&quot;info&quot;,&quot;ts&quot;:1626900981.520349,&quot;msg&quot;:&quot;info log&quot;}

$ ./main 1>/dev/null # displays only stderr logs
{&quot;level&quot;:&quot;error&quot;,&quot;ts&quot;:1626901025.056065,&quot;msg&quot;:&quot;error log&quot;}

Atas ialah kandungan terperinci Bagaimana untuk Mengasingkan Log mengikut Tahap Keterukan Menggunakan uber-go/zap?. 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