go語言內建的log包實現了簡單的日誌服務。以下主要介紹log的基本使用
package main
import
"log"
func
main()
輸出結果如下:
2020/04
/0115:
27:29 這是一條很普通的日誌。
2020/04
/0115:
27:29 這是一條不正常的日誌。
2020/04
/0115:
27:29 這是一條會觸發fatal的日誌。
logger會列印每條日誌資訊的日期、時間,預設輸出到系統的標準錯誤。fatal系列函式會在寫入日誌資訊後呼叫os.exit(1)。panic系列函式會在寫入日誌資訊後panic
預設情況下的logger只會提供日誌的時間資訊,但是很多情況下我們希望得到更多資訊,比如記錄該日誌的檔名和行號等。log標準庫中為我們提供了定製這些設定的方法。
log標準庫中的flags函式會返回標準logger的輸出配置,而setflags函式用來設定標準logger的輸出配置。
func
flags()
intfunc
setflags
(flag int
)
flag定義如下常量
const
( ldate =
1<<
iota
// 日期:2009/01/23
llongfile // 檔案全路徑名+行號: /a/b/c/d.go:23
lshortfile // 檔名+行號:d.go:23(會覆蓋掉llongfile)
lutc // 使用utc時間
lstdflags = ldate | ltime // 標準logger的初始值
)
示例如下:
func
main()
輸出如下:
2020/04
/0115:
26:34.023049
/code/main.go:
5: 這是一條很普通的日誌。
定義方法:
func
prefix()
string
//檢視標準logger的輸出字首
func
setprefix
(prefix string
)//設定輸出字首
示例如下:
func
main()
顯示:
[大胸弟]
2020/04
/0115:
29:13.093592
/code/main.go:
6: 這是一條很普通的日誌。
func
setoutput
(w io.writer)
setoutput函式用來設定標準logger的輸出目的地,預設是標準錯誤輸出。
示例,將日誌輸出到同目錄下的xx.log檔案中
func
main()
log.
setoutput
(logfile)
log.
setflags
(log.llongfile | log.lmicroseconds | log.ldate)
log.
setprefix
("[大胸弟]"
) log.
println
("這是一條很普通的日誌。"
)}
如果要使用標準的logger,通常將上面的配置寫入init函式中
func
init()
log.
setoutput
(logfile)
log.
setflags
(log.llongfile | log.lmicroseconds | log.ldate)
}
log標準庫中還提供了乙個建立新logger物件的建構函式–new,支援我們建立自己的logger示例。new函式的簽名如下:
func
new(out io.writer,prefix string
, flag int
)*logger
new建立乙個logger物件。其中,引數out設定日誌資訊寫入的目的地。引數prefix會新增到生成的每一條日誌前面。引數flag定義日誌的屬性(時間、檔案等等)。
示例
func
main()
說明:輸出到標準輸出,字首為,後面為定義日誌格式。 Go語言標準庫之log
目錄 四 建立logger 五 總結 go 從入門到放棄完整教程目錄 更有python go pytorch tensorflow 爬蟲 人工智慧教學等著你 更新 更全的 go從入門到放棄 的更新 更有python go 人工智慧教學等著你 無論是軟體開發的除錯階段還是軟體上線之後的執行階段,日誌一...
Go語言標準庫log介紹
無論是軟體開發的除錯階段還是軟體上線之後的執行階段,日誌一直都是非常重要的乙個環節,我們也應該養成在程式中記錄日誌的好習慣。go語言內建的log包實現了簡單的日誌服務。本文介紹了標準庫log的基本使用。log包定義了logger型別,該型別提供了一些格式化輸出的方法。本包也提供了乙個預定義的 標準 ...
Go語言之GO 語言常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...