您的位置 首页 golang

golang日志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.Loggerfunc 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")}

文章来源:智云一二三科技

文章标题:golang日志log

文章地址:https://www.zhihuclub.com/2936.shtml

关于作者: 智云科技

热门文章

网站地图