以下是使用logrus将日志写入MySQL的示例代码:

import (
    "database/sql"
    "fmt"
    "github.com/sirupsen/logrus"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // MySQL数据库连接信息
    db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/database_name")
    if err != nil {
        logrus.Fatalf("Failed to connect to MySQL database: %v", err)
    }
    defer db.Close()

    // 创建logrus实例并设置输出格式
    logger := logrus.New()
    logger.SetFormatter(&logrus.JSONFormatter{})

    // 设置MySQL为输出目标
    hook := NewMySQLHook(db, "log_table_name")
    logger.AddHook(hook)

    // 输出日志
    logger.Info("This is an info log.")
    logger.Error("This is an error log.")
}

// MySQLHook实现了logrus.Hook接口,将日志写入MySQL数据库
type MySQLHook struct {
    db *sql.DB
    tableName string
}

func NewMySQLHook(db *sql.DB, tableName string) *MySQLHook {
    return &MySQLHook{
        db: db,
        tableName: tableName,
    }
}

func (hook *MySQLHook) Levels() []logrus.Level {
    return logrus.AllLevels
}

func (hook *MySQLHook) Fire(entry *logrus.Entry) error {
    // 将日志写入MySQL数据库
    query := fmt.Sprintf("INSERT INTO %s (level, message) VALUES (?, ?)", hook.tableName)
    _, err := hook.db.Exec(query, entry.Level, entry.Message)
    return err
}

注意:在使用此示例代码之前,您需要先安装logrus和MySQL驱动程序。您可以使用以下命令来安装它们:

go get github.com/sirupsen/logrus
go get github.com/go-sql-driver/mysql
logrus写mysql

原文地址: http://www.cveoy.top/t/topic/Huc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录