第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang中如何將日志寫入多個日志文件?

golang中如何將日志寫入多個日志文件?

Go
慕尼黑的夜晚無繁華 2023-06-12 10:00:15
我正在編寫一個應(yīng)用程序,我需要在其中記錄兩個不同文件中的日志。例如weblogs .go 和debuglogs.go。我嘗試使用log4go,但我的要求是我需要在主文件中創(chuàng)建記錄器,并且可以在子目錄中訪問,因?yàn)橹饕慕獯a和記錄是在子文件中完成的。有人可以幫忙嗎?
查看完整描述

2 回答

?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個贊

這是使用標(biāo)準(zhǔn)log包的一種方法:


package main


import (

    "io"

    "log"

    "os"

)


func main() {

    f1, err := os.Create("/tmp/file1")

    if err != nil {

        panic(err)

    }

    defer f1.Close()


    f2, err := os.Create("/tmp/file2")

    if err != nil {

        panic(err)

    }

    defer f2.Close()


    w := io.MultiWriter(os.Stdout, f1, f2)

    logger := log.New(w, "logger", log.LstdFlags)


    myfunc(logger)

}


func myfunc(logger *log.Logger) {

    logger.Print("Hello, log file!!")

}

筆記:

  1. io.MultiWriter用于將多個編寫器組合在一起。在這里,它創(chuàng)建了一個寫入器w- 寫入w將轉(zhuǎn)到os.Stdout兩個文件

  2. log.New讓我們log.Logger用自定義編寫器創(chuàng)建一個新對象

  3. log.Logger對象可以傳遞給函數(shù)并由它們用來記錄事物


查看完整回答
反對 回復(fù) 2023-06-12
?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個贊

這就是您如何使用多日志文件管理用于調(diào)試和生產(chǎn)環(huán)境的日志:


首先,創(chuàng)建一個用于管理多個記錄器的類型,您可以為此創(chuàng)建一個單獨(dú)的文件,例如logging.go


type LOGGER struct {

        debug *log.Logger

        prod  *log.Logger

        .

        .

        .

    }

要在項(xiàng)目中的任何位置獲取指針,最好的方法是通過單例模式LOGGER獲取它,例如


    var lock = &sync.Mutex{}

    var loggers *LOGGER


    func GetLoggerInstance() *LOGGER {

      lock.Lock()

      defer lock.Unlock()


    if loggers == nil {

      fmt.Println("Creating LOGGER instance now.")

      loggers = &LOGGER{} 

    } else {

        fmt.Println("LOGGER instance already created.")

    }


    return loggers

}

    

現(xiàn)在在任何 pkg 或目錄級別為調(diào)試環(huán)境設(shè)置記錄器更好的方法是在根級別設(shè)置它


    logger := GetLoggerInstance()

    f, err := os.OpenFile("path/to/debug/log/file", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)

    if err != nil {

        fmt.Println("debug log file not created", err.Error())

    }

    loggers.debug = log.New(f, "[DEBUG]", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC)


    loggers.debug.Println("This is debug log message")


使用相同的方法,您還可以創(chuàng)建 prod 或任意數(shù)量。


    logger := GetLoggerInstance()

    f, err = os.OpenFile("path/to/prod/log/file", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)

    if err != nil {

        fmt.Println("prod log file not created", err.Error())

    }

    loggers.prod = log.New(f, "[PROD]", log.Ldate|log.Ltime|log.Lmicroseconds|log.LUTC)


    loggers.prod.Println("This is prod log message")


查看完整回答
反對 回復(fù) 2023-06-12
  • 2 回答
  • 0 關(guān)注
  • 393 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號