logrus写mysql
以下是使用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
原文地址: http://www.cveoy.top/t/topic/Huc 著作权归作者所有。请勿转载和采集!