Golang Logrus日志库

在使用Golang的Logrus日志库时遇到了几个问题:1) 如何自定义日志输出格式?比如想在日志中添加固定的字段或者特定的时间格式;2) 多级别日志(如Debug、Info、Error)在实际项目中应该如何合理使用?3) Logrus与标准库log的性能对比如何?在高并发场景下是否会有性能瓶颈?4) 有没有推荐的日志切割方案?希望日志能按日期或大小自动分割。

2 回复

Logrus是Go语言流行的结构化日志库,支持分级日志、JSON格式和钩子扩展。使用简单,性能良好,适合项目日志管理。

更多关于Golang Logrus日志库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Logrus 是一个功能强大且灵活的 Go 语言结构化日志库,适用于记录应用程序日志。它支持日志级别、钩子(hooks)、自定义格式和字段等功能。以下是一个基本使用示例:

1. 安装 Logrus

使用以下命令安装 Logrus:

go get github.com/sirupsen/logrus

2. 基本用法

package main

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

func main() {
    // 设置日志级别(默认 InfoLevel)
    logrus.SetLevel(logrus.DebugLevel)
    
    // 设置日志格式为 JSON
    logrus.SetFormatter(&logrus.JSONFormatter{})
    
    // 记录不同级别的日志
    logrus.Debug("这是一条调试日志")
    logrus.Info("这是一条信息日志")
    logrus.Warn("这是一条警告日志")
    logrus.Error("这是一条错误日志")
    
    // 添加字段记录结构化日志
    logrus.WithFields(logrus.Fields{
        "user": "Alice",
        "id":   123,
    }).Info("用户登录成功")
}

3. 主要特性

  • 日志级别:支持 Debug、Info、Warn、Error、Fatal 和 Panic。
  • 自定义格式:支持文本(TextFormatter)和 JSON(JSONFormatter)格式。
  • 钩子(Hooks):可将日志发送到外部系统(如文件、数据库)。
  • 字段:通过 WithFields 添加结构化数据。

4. 自定义配置示例

func init() {
    logrus.SetFormatter(&logrus.TextFormatter{
        FullTimestamp: true,
    })
    logrus.SetLevel(logrus.InfoLevel)
}

Logrus 简单易用,适合中小型项目。对于更复杂需求,可结合文件钩子或第三方服务(如 Logstash)。

回到顶部