阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍Go语言常用的打log方式

87次阅读
没有评论

共计 1708 个字符,预计需要花费 5 分钟才能阅读完成。

导读 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")
}

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1708字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中