2014-05-09 102 views
4

我使用的是log軟件包,我想知道什麼是日誌數據的默認目標。我無法在任何地方找到它。我是否需要一個io作家,並且在每次登錄後專門調用它,或者它應該如何工作?哪裏去記錄錯誤?

回答

5

應該stdErr,如line 58 of log.go

var std = New(os.Stderr, "", LstdFlags) 

所以像Fatal()包裝方法採用默認的標準:

// Fatal is equivalent to Print() followed by a call to os.Exit(1). 
func Fatal(v ...interface{}) { 
    std.Output(2, fmt.Sprint(v...)) 
    os.Exit(1) 
} 

的博客文章 「How to write Go packages coders will love」(由巴倫·施瓦茨)基準技術:

其中一種模式我在標準庫中找到了我稱之爲包和對象的東西。 (這是我自己的名字,也許我正在重新命名或命名已知名稱的其他名稱)。您可以在幾個包中看到這個成語。它使這些軟件包非常適合使用。

成語的本質是,你設計一個類型的方法與往常一樣,然後你也可以在包級本身放置匹配函數。這些函數只是委託給一個私有包級別變量類型的默認實例,該變量在init()函數中創建。

例如,您可以導入log包,然後編寫log.Print()之類的東西來查看默認的日誌記錄功能。它非常簡潔和方便,它做對了。
想要定製它嗎?製作你自己的log.Logger變量,並設置它的屬性。

+0

另請參閱http://www.goinggo.net/2013/11/using-log-package-in-go.html – VonC

+0

仍然沒有得到它...我正在運行去例程,可以沒有找到日誌 –

+0

@用戶不知道我提到的文章說明你可以'導入日誌',直接使用'log.xxx()':你不必「查找日誌」,你只需導入和使用它。 – VonC