# log 日志打印

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
)

这是 log 的 flag 设置,flag 就是前缀的那些信息。

package main
import (
	"fmt"
	"log"
	"os"
)
func main() {
	fmt.Printf("log.Flags(): %v\n", log.Flags())
	log.SetPrefix("Mylog ")
	log.Output(1, "hello python")
	log.SetFlags(log.Ldate|log.Ltime | log.LUTC|log.Llongfile)
	log.Output(2, "hello python")
	fmt.Printf("log.Flags(): %v\n", log.Flags())
	log.Print("hello go")
	// log.Panic("not hello")
	f, err := os.OpenFile("log", os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0777)
	if err!=nil{
		fmt.Println("err")
	}
	l := log.New(f, "MyLog ", log.Ldate|log.Ltime|log.Llongfile)
	l.Print("hello go")
	defer f.Close()
}

结果:

image-20220115225639584

log.SetFlags(log.Ldate|log.Ltime | log.LUTC|log.Llongfile)

log.SetPrefix("Mylog ") 就是设置前缀。

这个 flag 就是对应着二进制位数,用 | 或方法来相加。

log 分为三种方法:print、panic、Fatal

print : 打印到日志输入。

panic : 触发 panic

fatal :打印完毕后立即退出。

output

func Output(calldepth int, s string) error

其中 calldepth 就是显示那一层调用了这个 output 方法,如果为 1 就是显示当前的文件 log.go ,我这里设置了 calldepth2 。所以它会再往下一层,显示的文件为 proc.go 。我觉得这个用处不是很大。

# logger

func New(out io.Writer, prefix string, flag int) *Logger

这个会生成一个 logger 结构体,后面直接用这个 logger 来操作就行了。

例如:

设置 stderr 为输入 log 的地方:

l2 := log.New(os.Stderr, "", 43)

直接打印到输出。

l := log.New(f, "MyLog ", log.Ldate|log.Ltime|log.Llongfile)

后续所有输出 print 都会被定向到 f 文件。

更新于

请我喝[茶]~( ̄▽ ̄)~*

Kalice 微信支付

微信支付

Kalice 支付宝

支付宝