go的log(一):Golang 標準庫提供的log
go的log(一):Golang 標準庫提供的log
Golang的標準庫提供了log的機制,但是該模組的功能較為簡單(看似簡單,其實他有他的設計思路)。不過比手寫fmt. Printxxx還是強很多的。至少在輸出的位置做了執行緒安全的保護。其官方手冊見Golang log 。這裡給出一個簡單使用的例子:
1 2 3 4 5 6 7 |
package
main
import
(
"log"
)
func main(){
log.Fatal(
"Come with fatal,exit with 1 \n"
)
}
|
編譯執行後,會看到程式列印了 Come with fatal,exit with 1
然後就退出了,如果用 echo $?
檢視退出碼,會發現是 “1”。
一般介面
Golang's log模組主要提供了3類介面。分別是 “Print 、Panic 、Fatal ”。當然是用前先包含log包。
1 2 3 |
import
(
"log"
)
|
為了方便是用,Golang和Python一樣,在提供介面時,提供一個簡單的包級別的使用介面。不同於Python,其輸出預設定位到標準錯誤 可以通過SetOutput
進行修改。
對每一類介面其提供了3中呼叫方式,分別是 "Xxxx 、 Xxxxln 、Xxxxf" 比如對於Print就有:
1 2 3 |
log.Print
log.Printf
log.Println
|
log.Print :表示其引數的呼叫方式和
fmt.Print
是類似的,即輸出物件而不用給定特別的標誌符號。log.Printf : 表示其引數的呼叫方式和
fmt.Printf
是類似的,即可以用C系列的格式化標誌表示輸出物件的型別,具體型別表示 可以參考fmt.Printf的文件log.Println: 表示其呼叫方式和
fmt.Println
類似,其和log.Print基本一致,僅僅是在輸出的時候多輸出一個換行
這裡是以 “Print”來具體說明的,對於“Panic”和“Fatal”也是一樣的。下面再以"Print"為例,看下呼叫方式:
1 2 3 4 5 6 7 8 9 10 |
package
main
import
(
"log"
)
func main(){
arr := []
int
{
2
,
3
}
log.Print(
"Print array "
,arr,
"\n"
)
log.Println(
"Println array"
,arr)
log.Printf(
"Printf array with item [%d,%d]\n"
,arr[
0
],arr[
1
])
}
|
會得到如下結果:
1 2 3 |
2014
/
05
/
02
12
:
27
:
19
Print array [
2
3
]
2014
/
05
/
02
12
:
27
:
19
Println array [
2
3
]
2014
/
05
/
02
12
:
27
:
19
Printf array
with
item [
2
,
3
|