Golang log模块用法

Golang log包学习

Log模块简介

Golang log模块提供了Print、Panic、Fatal三类接口,对每一类接口其提供了3中调用方式,分别是 “Xxxx 、 Xxxxln 、Xxxxf”,基本和fmt中的相关函数类似。
区别

  • log.Fatal接口,会先将日志内容打印到标准输入,接着直接调用os.exit(1)接口,退出程序并返回状态1,由于是直接退出,defer函数不会被调用。
  • log.Panic接口,该函数把日志内容输出到标准错误后调用panic函数,defer函数不会被调用。

Log模块使用方法

创建Log文件

Logfile := os.Create(LogfleName)

使用os模块提供的Create方法可以很方便的创建文件,如果需要随时间生成Log文件的话,可以将LogfileName随时间命名,使用time模块。


生成Log对象

TestLog := log.New(Logfile, "[Info]", log.Llongfile)

使用log模块New函数生成Log对象,其中Logfile为输出位置,是io.Writer对象;第二个参数为前缀,第三个参数为打印标记,这两个参数影响打印格式。


可以通过如下函数修改前缀和标记及输出。

TestLog.SetPrefix("[Debug]")
Testlog.SetOutput()
Testlog.SetFlags()

其Flag可以是以下值,或以下值或的值。

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

示例如下:

package main
import (
    "log"
    "os"
)
func main() {
    logName := "Test.log"
    logfile, err := os.Create(logName)
    defer logfile.Close()
    if err != nil {
        log.Fateln("Open log file error.")
    } 
    Testlog := log.New(logfile, "[Test]", log.Ldate | log.Ltime)
    Testlog.Println("A test message.")
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章