当前位置: 首页 > 帮助中心

Golang日志中如何记录SQL查询

时间:2026-01-30 11:24:13

在Golang中,我们通常使用第三方日志库来记录日志,例如logrus、zap等。为了记录SQL查询,我们可以在执行SQL查询之前和之后记录相关信息。以下是一个使用logrus库记录SQL查询的示例:

首先,确保已经安装了logrus库:

go get github.com/sirupsen/logrus

然后,创建一个简单的Go程序,如下所示:

package mainimport ("database/sql""fmt""github.com/sirupsen/logrus"_ "github.com/go-sql-driver/mysql")func main() {// 初始化logruslogrus.SetFormatter(&logrus.TextFormatter{FullTimestamp: true,})// 连接数据库db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")if err != nil {logrus.Fatal(err)}defer db.Close()// 查询SQLsql := "SELECT * FROM users WHERE age > ?"age := 18// 记录SQL查询logrus.WithFields(logrus.Fields{"sql": sql,"params": []interface{}{age},}).Info("Executing SQL query")// 执行SQL查询rows, err := db.Query(sql, age)if err != nil {logrus.WithFields(logrus.Fields{"error": err,}).Error("Failed to execute SQL query")return}defer rows.Close()// 处理查询结果for rows.Next() {var id intvar name stringvar userAge interr = rows.Scan(&id, &name, &userAge)if err != nil {logrus.WithFields(logrus.Fields{"error": err,}).Error("Failed to scan row")continue}logrus.WithFields(logrus.Fields{"id": id,"name": name,"age":userAge,}).Info("Row data")}// 检查查询过程中是否有错误if err = rows.Err(); err != nil {logrus.WithFields(logrus.Fields{"error": err,}).Error("Error occurred during row iteration")}}

在这个示例中,我们使用logrus库记录了SQL查询及其参数。在执行查询之前,我们使用logrus.WithFields记录了SQL语句和参数。在执行查询之后,我们处理查询结果并记录每一行的数据。

注意:在实际项目中,为了保护敏感信息,不建议将完整的SQL语句和参数记录到日志中。可以根据需要记录部分信息或者使用脱敏处理。


上一篇:怎样在Ubuntu上配置FTP服务器共享目录
下一篇:Ubuntu FTP服务器如何停止
Linux
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素