golang log包學習筆記

2021-10-08 10:56:53 字數 2530 閱讀 1005

列印日誌等操作的接收者是*logger

type logger struct

所以在列印日誌前,需要構造乙個logger物件

log包自帶乙個預設的logger,使用log.println()等列印日誌操作時,實際上是使用了該logger

var std =

new(os.stderr,

"", lstdflags)

func

new(out io.writer, prefix string

, flag int

)*logger

}

每個logger有自己的out,所以想將不同等級的log列印到不同地方,需要建立新的logger使用

var

( info *log.logger

warning *log.logger

error *log.logger

)func

init()

logger提供的方法簡單而又清晰,主要分為設定和列印兩種

在用log.new構造logger物件時,對應的三個引數分別是日誌輸出位置、日誌字首、日誌資訊

當logger構造好後,logger也有對應的方法修改以上三個值

setoutput

func

(l *logger)

setoutput

(w io.writer)

修改日誌資訊的輸出位置

setprefix

func

(l *logger)

setprefix

(prefix string

)

修改日誌資訊字首

setflags

func

(l *logger)

setflags

(flag int

)

修改日誌輸出資訊,時間、**位置等

列印日誌

列印日誌內容

func

(l *logger)

print

(v ...

inte***ce

)func

(l *logger)

printf

(format string

, v ...

inte***ce

)func

(l *logger)

println

(v ...

inte***ce

)

列印日誌內容後退出程式(嚴重錯誤)
func

(l *logger)

fatal

(v ...

inte***ce

)func

(l *logger)

fatalf

(format string

, v ...

inte***ce

)func

(l *logger)

fatalln

(v ...

inte***ce

)

列印日誌內容後宕機
func

(l *logger)

panic

(v ...

inte***ce

)func

(l *logger)

panicf

(format string

, v ...

inte***ce

)func

(l *logger)

panicln

(v ...

inte***ce

)

可以發現,列印日誌最原始的方法是output

func

(l *logger)

output

(calldepth int

, s string

)error

output是暴露出去的方法,所以在程式中也可以直接使用

calldepth可以恢復pc,列印日誌時,如果flag設定了file,可以看到呼叫棧前面幾層的位置

func

main()

/* 結果

/usr/local/go/src/log/log.go:376: calldepth 0

~/go/src/awesomeproject/main.go:8: calldepth 1

/usr/local/go/src/runtime/proc.go:203: calldepth 2

/usr/local/go/src/runtime/asm_amd64.s:1373: calldepth 3

*/

使用println等方法時,因為呼叫棧又多了一層,所以calldepth的值都為2

閉包學習筆記

作用域的定義 變數起作用的範圍 區域性變數的作用域是它自己所在的函式及其巢狀函式 示例1 function getcounter var counter getcounter counter counter counter 釋放閉包與它的環境 counter null counter getcoun...

python lxml包學習筆記

python lxml包用於解析xml和html檔案,可以使用xpath和css定位元素,個人認為相對於beautifulsoup功能更加強大,更加靈活。本文根據lxml官方文件和自己的理解列出常用的函式,本文 為python3.4,lxml2.0 lxml 支援 python2 python3 匯...

凸包學習筆記

凸包 凸包 convex hull 是乙個計算幾何 圖形學 中的概念。在乙個實數向量空間v中,對於給定集合x,所有包含x的凸集的交集s被稱為x的凸包。x的凸包可以用x內所有點 x1,xn 的線性組合來構造.在二維歐幾里得空間中,凸包可想象為一條剛好包著所有點的橡皮圈。用不嚴謹的話來講,給定二維平面上...