func New(out io.Writer, prefix string, flag int) *Logger
新建一个Logger, out设置输出,一般是文件,或者是os.Sdtout,prefix设置日记打印前缀,比如[info] [error]等信息,flag设置时间,日期等信息,可选设置如下:
Constants
const (
// 字位共同控制输出日志信息的细节。不能控制输出的顺序和格式。
// 在所有项目后会有一个冒号:2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
Ldate = 1 << [iota](https://studygolang.com/static/pkgdoc/pkg/builtin.htm#iota) // 日期:2009/01/23
Ltime // 时间:01:23:23
Lmicroseconds // 微秒分辨率:01:23:23.123123(用于增强Ltime位)
Llongfile // 文件全路径名+行号: /a/b/c/d.go:23
Lshortfile // 文件无路径名+行号:d.go:23(会覆盖掉Llongfile)
LstdFlags = [Ldate](https://studygolang.com/static/pkgdoc/pkg/log.htm#Ldate) | [Ltime](https://studygolang.com/static/pkgdoc/pkg/log.htm#Ltime) // 标准logger的初始值
)
简单的例子:
package main
import (
"log"
"os"
)
func main() {
log := log.New(os.Stdout,"[info]: ",log.Ldate | log.Ltime | log.Llongfile)
log.Output(0,"gfdlgdo")
}
输出
[info]: 2019/07/07 16:52:35 /usr/local/go/src/log/log.go:159: gfdlgdo
log模块主要提供了3类接口。分别是 “Print 、Panic 、Fatal ”,对每一类接口其提供了3中调用方式,分别是 "Xxxx 、 Xxxxln 、Xxxxf",基本和fmt中的相关函数类似.
对于 log.Fatal 接口,会先将日志内容打印到标准输出,接着调用系统的 os.exit(1) 接口,退出程序并返回状态 1 。但是有一点需要注意,由于是直接调用系统接口退出,defer函数不会被调用.
对于log.Panic接口,该函数把日志内容刷到标准错误后调用 panic 函数.
下面是一个Print的示例:
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])
}
输出结果:
2019/07/07 17:32:05 Print array [2 3]
2019/07/07 17:32:05 Println array [2 3]
2019/07/07 17:32:05 Printf array with item [2,3]