首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go 编程 | 连载 22 - Go 的 Log

Go 编程 | 连载 22 - Go 的 Log

作者头像
RiemannHypothesis
发布2022-09-28 16:11:59
发布2022-09-28 16:11:59
26400
代码可运行
举报
文章被收录于专栏:ElixirElixir
运行总次数:0
代码可运行

一、Go 的 Log

日志是用来记录程序运行期间发生的情况,无论程序需不需要调试或者是否发生错误,都会产生日志,日志对于立即程序的运行过程或者排查错误原因非常有帮助。

很多应用程序都提供了日志功能,日志功能可以用来监听程序的健康状况、跟踪问题以及发现问题等。

Go 语言提供了 log 包,可以让应用程序能够将日志写入终端或者文件中。

代码语言:javascript
代码运行次数:0
运行
复制
package main

import (
   "fmt"
   "log"
)

func main(){

   log.Println("这是 Go 语言的日志信息")
   fmt.Println("fmt.Printf 标准输出函数信息")
   println("内置 print 函数输出")
}

执行上述代码,输出结果如下:

上述输出结果中 log 标准库下的 Println 函数的输出内容比较醒目而且带有日志输出的时间,fmt.Printlnfmt 包下的标准输出函数,println 是 Go 内置的标准输出\错误函数,虽然输出内容比 fmt.Println 醒目,但是没有日志输出时间。

Log 除了可以记录程序的运行过程外还可以记录程序发生的致命错误

代码语言:javascript
代码运行次数:0
运行
复制
package main

import (
   "errors"
   "fmt"
   "log"
)

func main(){

   div(1, 0)
   fmt.Println(div(2,1))
}

func div(x, y int) (res interface{}, err error){

   if y == 0 {
      res = nil
      err = errors.New("除数不能为 0")
      log.Fatal(err)
      return
   } else {
      res = x / y
      return
   }
}

执行上述代码,输出结果如下:

可以看出程序 log.Fatal 函数不仅输出了报错信息,并且使程序退出不再往下执行。

程序的日志不仅可以输出到终端,还可以记录到文件中,方便日后的追溯,将日志写入文件可以使用 Go 语言本身提供的功能也可以使用操作系统提供的功能

代码语言:javascript
代码运行次数:0
运行
复制
package main

import (
   "log"
   "os"
)

func main(){

   f, err := os.OpenFile("2022-09-02.log", os.O_APPEND | os.O_CREATE | os.O_RDWR, 0777)

   if err != nil {
      log.Fatal(err)
   }

   defer f.Close()

   log.SetOutput(f)

   for i := 1; i < 5; i++ {
      log.Printf("Log iteration %d", i)
   }

}

上述代码中 0777 表示存储日志信息文件的权限为可读可写可执行,执行上述代码,查看项目目录下的 2022-09-01.log 文件。

当然还可以使用操作系统提供的功能将日志输出从终端重定向到文件

代码语言:javascript
代码运行次数:0
运行
复制
// filename: ex3.go

package main

import (
   "log"
)

func main(){
   
   for i := 1; i < 5; i++ {
      log.Printf("Log iteration %d", i)
   }

}

在终端中执行命令 go run ex3.go > 2022-09-03.log 2>&amp;1 既可将日志从控制台重定向到文件中。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Go 的 Log
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档