Go语言常用的打log方式详解

 更新时间:2022年10月25日 12:03:14   作者:fwhezfwhez  
Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能,下面这篇文章主要给大家介绍了关于Go语言常用的打log方式的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

文章介绍了3种常用的打log的方式,并赋上了注解

先写上注意事项,三种方法建议分开测,因为可能在第一种的Fatal会终止运行,Fatal和Panic和Print的区别在于,Fatal会保存日志并终止程序,Panic会保存日志并丢出异常终止程序,Print会保存日志但是程序继续

main.go

package main

import (
    "log"
    "bytes"
    "fmt"
    "os"
"github.com/astaxie/beego/logs"
)

func main() {

    //1.日志写入一段缓存里
    var buf bytes.Buffer
    logger := log.New(&buf, "logger: ", log.Llongfile)//三个参数对应输出对象,前缀,文件名然后整合成前缀
    logger.Print("Hello, log file!") //实际log信息
    fmt.Println(&buf)

    //2.日志写入一段文件里,执行完刷新工程,会有文件debug.log打开来看
    fileName := "debug.log"  //在工程路径下和src同级,也可以写绝对路径,不过要注意转义符
    logFile,err  := os.Create(fileName)  //创建该文件,返回句柄
    defer logFile.Close()      //确保文件在该函数执行完以后关闭
    if err != nil {  
        log.Fatalln("open file error !")  
    }  

    //库里的log包不存在级别,只有Print,Fatal,Panic三种,想要7种级别,可以用syslog包或者框架
    debugLog := log.New(logFile,"",log.Llongfile)  
    debugLog.Print("找到一个低级bug,低级别的日志报告,执行debug记录后继续执行")
    debugLog.Fatal("发现一个严重bug,日志已记录,程序在此终止")
    debugLog.Panic("哎呀,我没有被执行,好惨")

    //3.使用beego框架的log包进行log处理 ,对应7种级别
    logInstance:=logs.GetLogger()
    logInstance.Println("this is a message of http")
    //an official log.Logger with prefix ORM
    logs.GetLogger("ORM").Println("this is a message of orm")
    logs.Debug("my book is bought in the year of ", 2016)
    logs.Info("this %s cat is %v years old", "yellow", 3)
    logs.Warn("json is a type of kv like", map[string]int{"key": 2016})
    logs.Error(1024, "is a very", "good game")
    logs.Critical("oh,crash")
    logs.Notice("fuck")
    logs.Alert("alert")
    logs.Emergency("emergency")

}

第二种

main.go

package main

import (
    "os"
    "log"
)



func main() {
    file, err := os.OpenFile("./testLog/test.log",  os.O_CREATE | os.O_WRONLY | os.O_APPEND,os.ModePerm)
    if err != nil {
        log.Fatalln(err)
    }
    logger := log.New(file, "", log.LstdFlags|log.Llongfile)
    logger.Println("日志1.")
    logger.Println("日志23")
}

总结

到此这篇关于Go语言常用的打log方式的文章就介绍到这了,更多相关Go语言log详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go处理JSON数据的实现

    Go处理JSON数据的实现

    本文主要介绍了Go处理JSON数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • golang中xorm的基本使用说明

    golang中xorm的基本使用说明

    这篇文章主要介绍了golang中xorm的基本使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言学习之WaitGroup用法详解

    Go语言学习之WaitGroup用法详解

    Go语言中的 WaitGroup 和 Java 中的 CyclicBarrier、CountDownLatch 非常类似。本文将详细为大家讲讲WaitGroup的用法,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-06-06
  • 详解golang中发送http请求的几种常见情况

    详解golang中发送http请求的几种常见情况

    这篇文章主要介绍了详解golang中发送http请求的几种常见情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 简单讲解Go程序中使用MySQL的方法

    简单讲解Go程序中使用MySQL的方法

    这篇文章主要介绍了Go程序中使用MySQL的方法,需要使用第三方包来进行连接,需要的朋友可以参考下
    2015-10-10
  • golang中json反序列化可能遇到的问题

    golang中json反序列化可能遇到的问题

    这篇文章主要给大家介绍了关于golang中json反序列化可能遇到的问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • 如何将Golang数组slice转为逗号分隔的string字符串

    如何将Golang数组slice转为逗号分隔的string字符串

    这篇文章主要介绍了如何将Golang数组slice转为逗号分隔的string字符串问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 解析Golang中的锁竞争问题

    解析Golang中的锁竞争问题

    这篇文章主要介绍了golang中的锁竞争问题,本文通过实例代码给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • Go语言copy()实现切片复制

    Go语言copy()实现切片复制

    本文主要介绍了Go语言copy()实现切片复制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • go语言使用range来接收通道里面的数据

    go语言使用range来接收通道里面的数据

    本文主要介绍了go语言使用range来接收通道里面的数据,for ... range 循环会一直从通道中接收值,直到通道关闭并且所有值都被接收完毕,下面就来介绍一下,感兴趣的可以了解一下
    2025-04-04

最新评论