log
package main
import (
"log"
"os"
)
//init 在 main 之前执行
func init() {
// 设置前缀
log.SetPrefix("Log-Test ") //Log-Test2021/05/30 23:39:29 cant create file
//设置输出
// 创建日志文件名,还有日志文件的属性
f, err := os.OpenFile("./go-log.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
if err != nil {
log.Fatalln("cant create file")
}
// 接收任何实现了 io.writer 接口的类型都可以
log.SetOutput(f)
// 设置标签
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Llongfile) //日期 时间(默认就有) + 微秒+文件明和行号
//Log-Test 2021/05/30 23:54:55.941390 /Users/yanyi/Desktop/Project/Go/study_go/go_project/src/FromBirthToDeath/pkg/log_t.go:50: println
// 有一堆的标签,默认是 LstdFlags = Ldate | Ltime 3
// const (
// Ldate = 1 << iota // the date in the local time zone: 2009/01/23
// Ltime // the time in the local time zone: 01:23:23
// Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime.
// Llongfile // full file name and line number: /a/b/c/d.go:23
// Lshortfile // final file name element and line number: d.go:23. overrides Llongfile
// LUTC // if Ldate or Ltime is set, use UTC rather than the local time zone
// Lmsgprefix // move the "prefix" from the beginning of the line to before the message
// LstdFlags = Ldate | Ltime // initial values for the standard logger
//)
// iota常量中定义依次为 0,1,2,3,4
//移位的作用,
//Ldate = 1 << iota 1<<0 1向左移了 0 位还是 1, 00000001=1 2的0次
//Ltime 1<<1 1向左移了 1 位是 2, 00000010=2 2的1次
//Lmicroseconds 1<<2 1向左移了 2 位是 4, 00000100=4 2的2次
//这样的话可以实现组合, 00000011 代表的就是 Ldate 和 Ltime的组合
}
func main() {
log.Println("println") //ln带换行
//2021/05/30 23:33:17 println
//log.Fatalln("Fatalln")
//2021/05/30 23:33:37 Fatalln
//同时程序退出 相当于把信息记录日志后 同时执行了 OS.Exit(1 )
//log.Panicln("Panicln")
//log.Panic("Panicln") //不带换行的
//log.Panicf("Panicln %d",555) //带格式化的
//panic: Panicln
//
//
//goroutine 1 [running]:
//log.Panicln(0xc000070f68, 0x1, 0x1)
// /usr/local/go/src/log/log.go:368 +0xae
//main.main()
// /Users/yanyi/Desktop/Project/Go/study_go/go_project/src/FromBirthToDeath/pkg/log_t.go:17 +0x5d
//程序退出同时打出 panic 的原因
}
|
请发表评论