Go log 使用方式

log package 主要也是輸出紀錄訊息的一個函數,不同的是他的輸出包含時間在內。

範例

import "log"

func main() {
   log.Println("紀錄訊息A")
   log.Printf("紀錄訊息 %s\n", "hello World")
}

格式化訊息輸出

func init(){
   log.SetPrefix("【UserCenter】")  // 固定在表頭書出
   log.SetFlags(log.Ldate|log.Lshortfile)  // 時間+文件名稱與行號
}

// 可以使用的格式
const (
    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.
    LUTC                          //日期時間轉為0時區的
    LstdFlags     = Ldate | Ltime //Go提供的標準抬頭資訊
)

log 的輸出方式

func Println(v ...interface{}) {
    std.Output(2, fmt.Sprintln(v...))
}
func Fatalln(v ...interface{}) {
    std.Output(2, fmt.Sprintln(v...))
    os.Exit(1)
}
func Panicln(v ...interface{}) {
    s := fmt.Sprintln(v...)
    std.Output(2, s)
    panic(s)
}

訂製自己的日誌


var ( Info *log.Logger Warning *log.Logger Error * log.Logger ) func init(){ errFile,err:=os.OpenFile("errors.log",os.O_CREATE|os.O_WRONLY|os.O_APPEND,0666) if err!=nil{ log.Fatalln("打開日誌檔失敗:",err) } Info = log.New(os.Stdout,"Info:",log.Ldate | log.Ltime | log.Lshortfile) Warning = log.New(os.Stdout,"Warning:",log.Ldate | log.Ltime | log.Lshortfile) Error = log.New(io.MultiWriter(os.Stderr,errFile),"Error:",log.Ldate | log.Ltime | log.Lshortfile) } func main() { Info.Println("justjii:","http://www.justjii.justdrink.com.tw") Warning.Printf("智哥的科技網誌:%s\n","just jii") Error.Println("歡迎留言") }