go-logrus

logrus 是一个用于 Go 语言的结构化日志库,它提供了丰富的功能和灵活的配置选项。以下是对 logrus 日志库的详细解析:

安装

首先,你需要安装 logrus 库。你可以使用以下命令进行安装:

go get github.com/sirupsen/logrus

基本使用

以下是一个基本的 logrus 使用示例:

package main

import (
    "github.com/sirupsen/logrus"
)

func main() {
    // 初始化 logrus 实例
    logger := logrus.New()

    // 设置日志级别
    logger.SetLevel(logrus.DebugLevel)

    // 设置日志格式为 JSON
    logger.SetFormatter(&logrus.JSONFormatter{})

    // 记录日志
    logger.Info("这是一条信息日志")
    logger.Debug("这是一条调试日志")
    logger.Warn("这是一条警告日志")
    logger.Error("这是一条错误日志")
}

日志级别

logrus 支持以下几种日志级别:

  • PanicLevel
  • FatalLevel
  • ErrorLevel
  • WarnLevel
  • InfoLevel
  • DebugLevel
  • TraceLevel

你可以通过 SetLevel 方法设置日志级别:

logger.SetLevel(logrus.DebugLevel)

日志格式

logrus 支持多种日志格式,包括文本格式和 JSON 格式。你可以通过 SetFormatter 方法设置日志格式:

// 设置为文本格式
logger.SetFormatter(&logrus.TextFormatter{})

// 设置为 JSON 格式
logger.SetFormatter(&logrus.JSONFormatter{})

字段记录

logrus 支持结构化日志记录,你可以在日志中添加自定义字段:

logger.WithFields(logrus.Fields{
    "user_id": 123,
    "ip":      "192.168.1.1",
}).Info("用户登录")

输出到文件

你可以将日志输出到文件中:

package main

import (
    "os"
    "github.com/sirupsen/logrus"
)

func main() {
    // 打开一个日志文件
    file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    if err == nil {
        logrus.SetOutput(file)
    } else {
        logrus.Info("Failed to log to file, using default stderr")
    }

    logrus.Info("这是一条信息日志")
}

钩子(Hooks)

logrus 支持钩子机制,可以在日志记录时执行自定义操作。例如,你可以实现一个钩子将日志发送到远程服务器:

package main

import (
    "github.com/sirupsen/logrus"
)

type MyHook struct {}

func (h *MyHook) Levels() []logrus.Level {
    return logrus.AllLevels
}

func (h *MyHook) Fire(entry *logrus.Entry) error {
    // 在这里执行自定义操作,例如发送日志到远程服务器
    return nil
}

func main() {
    logger := logrus.New()
    logger.AddHook(&MyHook{})

    logger.Info("这是一条信息日志")
}

在 Gin 中使用 logrus

你可以在 Gin 框架中使用 logrus 进行日志记录。以下是一个示例:

package main

import (
    "github.com/gin-gonic/gin"
    "github.com/sirupsen/logrus"
)

var Logger = logrus.New()

func main() {
    r := gin.Default()

    r.GET("/log", func(ctx *gin.Context) {
        Logger.WithFields(logrus.Fields{
            "Method": ctx.Request.Method,
            "Path":   ctx.Request.URL.Path,
            "IP":     ctx.ClientIP(),
        }).Warning("这是一条警告日志")
    })

    r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值