导读 | 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") }
原文来自:
本文地址://q13zd.cn/go-log-linux.html编辑:向金平,审核员:逄增宝
Linux大全:
Linux系统大全: