Go語言 log日誌包

2021-08-24 18:07:13 字數 2597 閱讀 6253

golang's log模組主要提供了3類介面。分別是 「printpanicfatal」,對每一類介面其提供了3中呼叫方式,分別是 "***x 、 ***xln、***xf",基本和fmt中的相關函式類似,下面是乙個print的示例:

package main

import (

"log"

)func main()

log.print("print array ",arr,"\n")

log.println("println array",arr)

log.printf("printf array with item [%d,%d]\n",arr[0],arr[1])

}

會得到如下結果:

2016/12/15 19:46:19 print array [2 3]

2016/12/15 19:46:19 println array [2 3]

2016/12/15 19:46:19 printf array with item [2,3]

對於 log.fatal 介面,會先將日誌內容列印到標準輸出,接著呼叫系統的os.exit(1)介面,退出程式並返回狀態 1 。但是有一點需要注意,由於是直接呼叫系統介面退出,defer函式不會被呼叫,下面是乙個fatal的示例:

package main

import (

"fmt"

"log"

)func test_defe***tal()()

log.fatalln("test for defer fatal")

}func main()

會得到如下結果:

2016/12/15 19:46:45 test for defer fatal
可以看到並沒有呼叫defer 函式。

對於log.panic介面,該函式把日誌內容刷到標準錯誤後呼叫 panic 函式,下面是乙個panic的示例:

package main

import (

"fmt"

"log"

)func test_deferpanic()

}()log.panicln("test for defer panic")

defer func() ()

}func main()

會得到如下結果:

2016/12/15 19:59:30 test for defer panic

--first--

test for defer panic

可以看到首先輸出了「test for defer panic」,然後第乙個defer函式被呼叫了並輸出了「--first--」,但是第二個defer 函式並沒有輸出,可見在panic之後宣告的defer是不會執行的。

你也可以自定義logger型別, log.logger提供了乙個new方法用來建立物件:

func new(out io.writer, prefix string, flag int) *logger
該函式一共有三個引數:

(1)輸出位置out,是乙個io.writer物件,該物件可以是乙個檔案也可以是實現了該介面的物件。通常我們可以用這個來指定日誌輸出到哪個檔案。

(2)prefix 我們在前面已經看到,就是在日誌內容前面的東西。我們可以將其置為 "[info]" 、 "[warning]"等來幫助區分日誌級別。

(3) flags 是乙個選項,顯示日誌開頭的東西,可選的值有:

ldate         = 1 << iota     // 形如 2009/01/23 的日期

ltime // 形如 01:23:23 的時間

lmicroseconds // 形如 01:23:23.123123 的時間

llongfile // 全路徑檔名和行號: /a/b/c/d.go:23

lshortfile // 檔名和行號: d.go:23

lstdflags = ldate | ltime // 日期和時間

示例如下:

package main

import (

"log"

"os"

)func main()

debuglog := log.new(logfile,"[info]",log.llongfile)

debuglog.println("a info message here")

debuglog.setprefix("[debug]")

debuglog.println("a debug message here ")

}

go語言中日誌第三方包log4go的使用

文中通重載入配置檔案使用log4go。二 配置檔案log4go.xml stdout console info file file debug test client.log d t l s m true 10m0k false xmllog xmltrace trace.xml true 100m...

Go語言之log庫

go語言內建的log包實現了簡單的日誌服務。以下主要介紹log的基本使用 package main import log func main 輸出結果如下 2020 04 0115 27 29 這是一條很普通的日誌。2020 04 0115 27 29 這是一條不正常的日誌。2020 04 0115...

Go標準庫學習筆記 日誌 log

log 模組用於在程式中輸出日誌,它的使用十分簡單,類似於fmt中的print,乙個最簡單的示例如下 package main import log func main 上面的程式會在命令列列印一條日誌 2018 05 16 16 48 06 hello worldlogger是寫入日誌的基本元件,...