文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

文章介绍了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详解内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯