go日志包 log的使用
1、log简介
golang内置了log包,实现简单的日志服务。通过调用log包的函数,可以实现简单的日志打印功能。
2、log使用
log包中有3个系列的日志打印函数,分别print系列、panic系列、fatal系列。
函数系列 作用
print 单纯打印日志
panic 打印日志,抛出panic异常
fatal 打印日志,强制结束程序(os.Exit(1)),defer函数不会执行
2.1 简单示例
func main() {
defer fmt.Println(“panic退出前处理”)
log.Println(“println日志”)
log.Panic(“panic日志”)
log.Fatal(“程序退出日志”)
}
结果示例(实际结果不是这样的哦,因为panic,fatal会影响程序的执行):
2020/06/02 11:04:17 println日志
2020/06/02 11:04:17 panic日志
2020/06/02 11:04:17 panic退出前处理
2020/06/02 11:04:17 程序退出日志
3、log配置
3.1 标准log配置
默认情况下log只会打印出时间,但是实际情况下我们可能还需要获取文件名,行号等信息,log包提供给我们定制的接口。
log包提供两个标准log配置的相关方法:
func Flags() int // 返回标准log输出配置
func SetFlags(flag int) // 设置标准log输出配置
flag参数
const (
// 控制输出日志信息的细节,不能控制输出的顺序和格式。
// 输出的日志在每一项后会有一个冒号分隔:例如2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
Ldate = 1 << 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)
LUTC // 使用UTC时间
LstdFlags = Ldate | Ltime // 标准logger的初始值
)
标准日志配置示例
func init() {
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
}
func main() {
log.Println(“println日志”)
}
输出结果:
image.png
3.2 日志前缀配置
log包提供两个日志前缀配置的相关函数:
func Prefix() string // 返回日志的前缀配置
func SetPrefix(prefix string) // 设置日志前缀
日志前缀配置实例
func init() {
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
log.SetPrefix(“success”)
}
func main() {
log.Println(“println日志”)
}
输出结果:
image.png
3.3 日志输出位置配置
前面介绍的都是将日志输出到控制台上,golang的log包还支持将日志输出到文件中。log包提供了func SetOutput(w io.Writer)函数,将日志输出到文件中。
日志输出位置配置
func init() {
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
logFile, err := os.OpenFile(“./c.log”, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Panic(“打开日志文件异常”)
}
log.SetOutput(logFile)
}
func main() {
log.Println(“println日志”)
}
结果:日志输出到当前目录下c.log文件中
image.png
4、自定义logger
log包为我们提供了内置函数,让我们能自定义logger。从效果上来看,就是将标题3中的标准日志配置、日志前缀配置、日志输出位置配置整合到一个函数中,使日志配置不在那么繁琐。
log包中提供了func New(out io.Writer, prefix string, flag int) *Logger函数来实现自定义logger。
示例
var logger *log.Logger
func init() {
logFile, err := os.OpenFile(“./c.log”, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Panic(“打开日志文件异常”)
}
logger = log.New(logFile, “success”, log.Ldate | log.Ltime | log.Lshortfile)
}
func main() {
logger.Println(“自定义logger”)
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfbicg
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01