Go --- Zap日志包的使用


我们使用日志的目的是什么?

  1. 想知道系统在运行过程中发生什么,是在哪里发生的

  2. 想知道发生的时间

  3. 想知道发生事件的级别是什么

    日志级别

    共有8个级别,按照从低到高为:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
    All:最低等级的,用于打开所有日志记录.
    Trace:是追踪,就是程序推进一下.
    Debug:指出细粒度信息事件对调试应用程序是非常有帮助的.
    Info:消息在粗粒度级别上突出强调应用程序的运行过程.
    Warn:输出警告及warn以下级别的日志.
    Error:输出错误信息日志.
    Fatal:输出每个严重的错误事件将会导致应用程序的退出的日志.
    OFF:最高等级的,用于关闭所有日志记录.
    程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少

在学习Zap之前我们先对go自带的log包做一下介绍。

log包

搭建简单gin项目

首先我们先搭建一个简单的gin项目

$ go get -u github.com/gin-gonic/gin

然后

package main

import "github.com/gin-gonic/gin"

func main() {
   
   
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
   
   
		c.JSON(200, gin.H{
   
   
			"message": "pong",
		})
	})
	r.Run(":9000") // 监听并在 0.0.0.0:9000 上启动服务
}

启动项目并访问:http://localhost:9000/ping,如果出现如下信息就是搭建成功了。

在这里插入图片描述

配置日志

我们如果想要log的输出在某一个文件中,那么我们就需要给程序指定一个文件的路径,如下面的程序。

package utils

import (
   "log"
   "os"
)

// SetupLogger 启动logger
func SetupLogger()  {
   
   
   outFile, _ := os.OpenFile("./log.log", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0744)
   // 设置log输出位置
   log.SetOutput(outFile)
}

我们将访问者的ip输出到log文件中,那么我们还需要获取访问者的ip。

此段代码出处:go 获取http请求中的ip地址,博主地址:weishunuan

package utils

import "net/http"

// RemoteIp 获取请求中的IP
func RemoteIp(req *http.Request) string {
   
   
   var remoteAddr string
   // RemoteAddr
   remoteAddr = req.RemoteAddr
   if remoteAddr != "" {
   
   
      return remoteAddr
   }
   // ipv4
   remoteAddr = req.Header.Get("ipv4")
   if remoteAddr != "" {
   
   
      return remoteAddr
   }
   //
   remoteAddr = req.Header.Get("XForwardedFor")
   if remoteAddr != "" {
   
   
      return remoteAddr
   }
   // X-Forwarded-For
   remoteAddr = req.Header.Get("X-Forwarded-For")
   if remoteAddr != "" {
   
   
      return remoteAddr
   }
   // X-Real-Ip
   remoteAddr = req.Header.Get("X-Real-Ip")
   if remoteAddr != "" {
   
   
      return remoteAddr
   } else {
   
   
      remoteAddr = "127.0.0.1"
   }
   return remoteAddr
}

测试log

在主方法中启动刚才的日志配置。

package main

import (
   "github.com/gin-gonic/gin"
   "log"
   "log/logtest/utils"
   "net/http"
)

func 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值