yyz notes yyz notes
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

益章

可乐鸡翅
首页
  • RBAC权限设计
  • 架构图标设计
  • 账号体系
  • python基础
  • python高级
  • python模块
  • python设计模式
  • python数据结构与算法
  • django
  • django-DRF
  • flask
  • 直接设计开源pip包
  • 直接设计开源项目
  • python示例题/脚本
  • python面试题
  • golang基础
  • golang高级
  • golang常用组件
  • gin框架
  • es6
  • javascript
  • react
  • vue
  • TypeScript
  • mysql
  • redis
  • minio
  • elasticsearch
  • mongodb
  • 消息队列
  • 自动化测试
  • 操作系统

    • linux
    • windows
  • nginx
  • docker
  • k8s
  • git
  • ldap
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • golang基础

  • golang高级

  • 常用组件

    • go操作mysql

    • go操作redis

    • Zap日志库

      • 默认的Go Logger
        • 实现Go Logger
          • 1. 设置Logger
          • 2. 使用Logger
          • 3. Logger的运行
          • 示例代码
        • Go Logger的优势和劣势
          • 优势
          • 劣势
      • Uber-go Zap
    • 配置文件管理

  • gin

  • golang
  • 常用组件
  • Zap日志库
YiZhang-You
2023-05-24
目录

默认的Go Logger

# 1. 默认的Go Logger

在介绍Uber-go的zap包之前,让我们先看看Go语言提供的基本日志功能。Go语言提供的默认日志包是https://golang.org/pkg/log/ (opens new window)。

# 实现Go Logger

实现一个Go语言中的日志记录器非常简单——创建一个新的日志文件,然后设置它为日志的输出位置。

# 1. 设置Logger

我们可以像下面的代码一样设置日志记录器

// SetupLogger 定义日志
func SetupLogger() {
	logFileLocation, _ := os.OpenFile("C:\\Users\\Bee\\Desktop\\test.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0744)
	log.SetOutput(logFileLocation)
}
1
2
3
4
5

# 2. 使用Logger

让我们来写一些虚拟的代码来使用这个日志记录器。

在当前的示例中,我们将建立一个到URL的HTTP连接,并将状态代码/错误记录到日志文件中。

// 测试日志
func simpleHttpGet(url string) {
	resp, err := http.Get(url)
	if err != nil {
		log.Printf("Error fetching url %s : %s", url, err.Error())
	} else {
		log.Printf("Status Code for %s : %s", url, resp.Status)
		resp.Body.Close()
	}
}
1
2
3
4
5
6
7
8
9
10

# 3. Logger的运行

现在让我们执行上面的代码并查看日志记录器的运行情况。

func main() {
	// 1. 定义日志
	SetupLogger()

	// 2. 使用测试
	simpleHttpGet("www.google.com")
	simpleHttpGet("http://www.google.com")
}
1
2
3
4
5
6
7
8

当我们执行上面的代码,我们能看到一个test.log文件被创建,下面的内容会被添加到这个日志文件中。

2023/02/27 22:03:16 Error fetching url www.google.com : Get "www.google.com": unsupported protocol scheme ""
2023/02/27 22:03:37 Error fetching url http://www.google.com : Get "http://www.google.com": dial tcp 162.125.34.133:80: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
1
2

# 示例代码

package main

import (
	"log"
	"net/http"
	"os"
)

// SetupLogger 定义日志
func SetupLogger() {
	// 在目录生会生成文件
	logFileLocation, _ := os.OpenFile("C:\\Users\\Bee\\Desktop\\test.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0744)
	log.SetOutput(logFileLocation)
}

// 测试日志
func simpleHttpGet(url string) {
	resp, err := http.Get(url)
	if err != nil {
		log.Printf("Error fetching url %s : %s", url, err.Error())
	} else {
		log.Printf("Status Code for %s : %s", url, resp.Status)
		resp.Body.Close()
	}
}

func main() {
	// 1. 定义日志
	SetupLogger()

	// 2. 使用测试
	simpleHttpGet("www.google.com")
	simpleHttpGet("http://www.google.com")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# Go Logger的优势和劣势

# 优势

它最大的优点是使用非常简单。我们可以设置任何io.Writer作为日志记录输出并向其发送要写入的日志。

# 劣势

  • 仅限基本的日志级别

  • 只有一个Print选项。不支持INFO/DEBUG等多个级别。

  • 对于错误日志,它有Fatal和Panic

  • Fatal日志通过调用os.Exit(1)来结束程序

  • Panic日志在写入日志消息之后抛出一个panic

  • 但是它缺少一个ERROR日志级别,这个级别可以在不抛出panic或退出程序的情况下记录错误

  • 缺乏日志格式化的能力——例如记录调用者的函数名和行号,格式化日期和时间格式。等等。

  • 不提供日志切割的能力。

编辑 (opens new window)
go-redis使用
Uber-go Zap

← go-redis使用 Uber-go Zap→

最近更新
01
配置yun源
05-24
02
linux-配置python虚拟环境
05-24
03
linux文件目录管理
05-24
更多文章>
Theme by Vdoing | Copyright © 2023-2023 yizhang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式