Go语言程序记录日志

许多软件系统运行中需要日志文件。Go语言程序中,输出日志需要使用包”log”,编写程序十分简单。

像Java语言程序,输出日志时,往往需要使用开源的软件包来实现,编写程序稍微复杂一些。

Go语言的包”log”中,提供了三类借口,分别是Print(一般的log,进程退出代码为0即正常)、Panic(意外的log,进程退出代码为2)和Fatal(致命的log,进程退出代码为1)。

这里分别给出三个有个log的程序及其运行结果。

Go语言程序之一(Print):

// log project main.go
package main

import (
    "log"
)

func main() {
    no := []int{1, 2}

    log.Print("Print no ", no, "\n")
    log.Println("Println no", no)
    log.Printf("Printf no with item [%d,%d]\n", no[0], no[1])
}

程序运行结果(Print):

2017/08/11 12:43:38 Print no [1 2]
2017/08/11 12:43:38 Println no [1 2]
2017/08/11 12:43:38 Printf no with item [1,2]
成功: 进程退出代码 0.

Go语言程序之二(Panic):

// log3 project main.go
package main

import (
    "log"
)

func main() {
    no := []int{1, 2}

    log.Panicln("Println no", no)
}

程序运行结果(Panic):

2017/08/11 12:40:07 Println no [1 2]
panic: Println no [1 2]

goroutine 1 [running]:
log.Panicln(0xc42003ff50, 0x2, 0x2)
    /usr/local/go/src/log/log.go:344 +0xc0
main.main()
    /home/lin/go/src/log3/main.go:11 +0xe3
错误: 进程退出代码 2.

Go语言程序之三(Fatal):

// log2 project main.go
package main

import (
    "log"
)

func main() {
    no := []int{1, 2}

    log.Fatalln("Println no", no)
}

程序运行结果(Fatal):

2017/08/11 12:37:38 Println no [1 2]
错误: 进程退出代码 1.

程序说明:(略)

Original: https://www.cnblogs.com/tigerisland/p/7563549.html
Author: 海岛Blog
Title: Go语言程序记录日志

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/535748/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Go语言实现线程安全访问队列

    这个例子用Go语言的包”container/list”实现一个线程安全访问的队列。其中不少细节耐人寻味,做出它则是花费了不少精力,找不到样例啊! Go语言的…

    Go语言 2023年5月29日
    045
  • 雅可比行列式迭代及优化(golang版)

    最近遇到的一个求解雅可比迭代的问题,这个计算方法在 python 中有现成的库,但是在 golang 中没找到相应的实现。于是根据雅可比行列式的推导实现了一个 golang 版本的…

    Go语言 2023年5月25日
    056
  • 【Go语言】(一)环境搭建与了解VScode工具

    视频链接(p1~p8): golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!] 参考链接: 用vscode开发go的时候,安装go包报错:connectex…

    Go语言 2023年5月25日
    058
  • go语言标准库

    学习go 语言,如果不知道标准库,那很多能力就不知道,标准库应该是程序员可以背下来的 bufio bytes container crypto database debug enc…

    Go语言 2023年5月29日
    050
  • Golang使用swaggo自动生成Restful API文档

    相信很多程序猿和我一样不喜欢写API文档。写代码多舒服,写文档不仅要花费大量的时间,有时候还不能做到面面具全。但API文档是必不可少的,相信其重要性就不用我说了,一份含糊的文档甚至…

    Go语言 2023年5月25日
    051
  • golang 中 sync.Mutex 的实现

    mutex 主要有两个 method: Lock() 和 Unlock() Lock() 可以通过一个 CAS 操作来实现 func (m *Mutex) Lock() { for…

    Go语言 2023年5月25日
    053
  • Maglev : A Fast and Reliable Software Network Load Balancer (using Consistent Hashing)

    前言(为什么想读这一篇论文) 这一篇论文吸引我注意的原因是,Consistent Hashing ;本来的特性就是作为分布式缓存之用。谷歌将他们的负载均衡器(代号:Maglev)发…

    Go语言 2023年5月25日
    050
  • gofs使用教程-基于golang的开源跨平台文件同步工具

    gofs是基于golang开发的一款开箱即用的跨平台文件同步工具,支持在本地磁盘之间同步、从远程服务器同步变更到本地、将本地文件变更推送到远程服务器三种模式。开源地址如下:Gith…

    Go语言 2023年5月25日
    051
  • 盘点Go中的开发神器

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star。 在Java中,我们用Junit做单元测试,用JMH做性能基准测试(benc…

    Go语言 2023年5月25日
    073
  • websocket:二.Golang实现Websocket消息通知

    我们在设计产品的时候通常都会遇到消息通知的时候,比如用户下单支付成功,比如用户有站内信来可以实时通知。而http是单向的,客户端请求,服务端返回,这次请求就已经结束。而websoc…

    Go语言 2023年5月25日
    055
  • gRPC,爆赞

    gRPC 这项技术真是太棒了,接口约束严格,性能还高,在 k8s 和很多微服务框架中都有应用。 作为一名程序员,学就对了。 之前用 Python 写过一些 gRPC 服务,现在准备…

    Go语言 2023年5月25日
    052
  • 在开发中将git运用自如

    写这篇文章的初衷是记录自己在开发中使用git遇到的问题和如何利用git进行高效的开发。个人理解来看,很多人对git运用不自如主要是两方面的原因:1、死记硬背命令,这个其实可以通过h…

    Go语言 2023年5月25日
    042
  • Go语言之函数

    函数就是一块执行特定任务的代码,在输入源的基础上通过一些算法生成预期的输出。 Go 语言中的函数声明语法如下: func 函数名(参数名 类型,参数名 类型)(返回值1类型,返回值…

    Go语言 2023年5月25日
    031
  • Kubernetes容器编排探索与实践v1.22.1-上半部分

    概述 本人博客网站 IT小神; www.itxiaoshen.com Kubernetes官网地址 https://kubernetes.ioKubernetes GitHub源码…

    Go语言 2023年5月25日
    080
  • 读 Go 源码,可以试试这个工具

    原文链接: 读 Go 源码,可以试试这个工具 编程发展至今,从面向过程到面向对象,再到现在的面向框架。写代码变成了一件越来越容易的事情。 学习基础语法,看看框架文档,几天时间搞出一…

    Go语言 2023年5月25日
    042
  • go 错误处理设计思考

    前段时间准备对线上一个golang系统服务进行内部开源,对代码里面的错误处理进行了一波优化。 优化的几个原因: 错误处理信息随意,未分类未定义。看到错误日志不能第一时间定位 错误的…

    Go语言 2023年5月25日
    047
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球