有这样一种常见场景, 我在开发调试时,需要大量输出代码.
在开发完成后,不希望这些调试信息输出. 只打印我需要的必要信息
可以使用log库,可以设置输出级别,对于那些调试信息,使用log打印, 其他的需要正常输出的使用fmt
在执行时加一个debug参数就行了
在 Go 语言中,使用 log 包的默认设置,日志级别为 Info。要将日志级别设置为 Debug,你需要使用 flag 包来解析命令行参数,并根据参数设置日志级别。
以下是一个示例:
1 | package main |
解释:
flag.Bool("debug", false, "设置调试模式"): 定义一个名为debug的命令行参数,默认值为false。flag.Parse(): 解析命令行参数。if *debug { ... } else { ... }: 根据debug参数的值,设置不同的日志级别。log.SetFlags(log.LstdFlags | log.Lshortfile): 设置日志输出格式,包括时间、文件名和行号。log.SetOutput(os.Stdout): 将日志输出到标准输出(控制台)。log.Println("这是一个调试日志"): 仅在debug模式下输出调试日志。
运行程序:
- 编译程序:
go build main.go - 运行程序:
./main- 输出信息日志和错误日志./main -debug- 输出信息日志、错误日志和调试日志
注意:
- 使用
log.SetFlags(log.LstdFlags | log.Lshortfile)可以将文件名和行号添加到日志输出中,方便调试。 - 你也可以使用其他日志库,例如
logrus或zap,它们提供了更丰富的功能,例如结构化日志和自定义日志级别。
其实也不咋优雅…
1 | // 输出日志 |
还得要写if….
最好能log.Debug()这种的
使用zap
1 | // 创建一个 Logger |
这样就可以了,不通过flag来控制了,直接在代码里指定是zap.NewProduction 还是 zap.NewDevelopmen
原文链接: https://dashen.tech/2018/08/15/Go使用log更优雅打印输出/
版权声明: 转载请注明出处.