2012-11-21 25 views
9

在Go中執行日誌記錄的慣用方法是什麼?如何在Go庫中實現慣用日誌記錄?

+0

有大量的第三方庫提供更多功能完整的實現。例如,在標準庫中,我錯過了自定義格式化和日誌級別(調試,信息...)的方便選項,並最終實現了自己的庫 - [go-log](https://github.com/scale -IT /去日誌)。看看它。 –

回答

11

創建一個聲明全局變量的文件logger。然後,使用Go的慣用功能init()在啓動時初始化變量。

logger.go

package xxx 

import (
    "log" 
    "os" 
) 

var logger *log.Logger 
func init() { 
    logger = log.New(os.Stderr, "xxx: ", log.Ldate | log.Ltime | log.Lshortfile) 
} 

example.go

func test() { 
    logger.Println("Logged") 
} 

這種方法提供了可使用能夠從一個單一的配置單記錄器實現利益文件。

編輯: ThomasKappler指出,如果您只使用單個全局記錄器,則可以使用日誌包的內置記錄器並使用SetFlags進行配置。唯一的區別是你必須更加明確並導入日誌包。

+11

如果只使用一個全局記錄器,則可以跳過創建自己的記錄器並使用log.Println等日誌包的函數。您仍然可以使用log.SetFlags()對其進行配置。 –

+0

@ThomasKappler謝謝,我不知道。我更喜歡使用這種方法,因爲我可以在不破壞現有功能的情況下擴展記錄器(另外,我不必隨處導入日誌包) – liamzebedee

相關問題