From 2aa2e9bbdd55dc2abebf2ef5e796cee1899c96f0 Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Sun, 7 Sep 2025 17:53:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/logs/logs.go | 41 +++++++++++++++++++++++++++++++++ internal/storage/db/postgres.go | 19 ++++++++++++--- 2 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 internal/logs/logs.go diff --git a/internal/logs/logs.go b/internal/logs/logs.go new file mode 100644 index 0000000..2409f1b --- /dev/null +++ b/internal/logs/logs.go @@ -0,0 +1,41 @@ +// Package logs 提供统一的日志记录功能 +// 支持不同级别的日志记录和格式化输出 +package logs + +import ( + "log" + "os" +) + +// Logger 代表日志记录器结构 +type Logger struct { + // logger 内部日志记录器 + logger *log.Logger +} + +// NewLogger 创建并返回一个新的日志记录器实例 +func NewLogger() *Logger { + return &Logger{ + logger: log.New(os.Stdout, "", log.LstdFlags|log.Lshortfile), + } +} + +// Info 记录信息级别日志 +func (l *Logger) Info(message string) { + l.logger.Printf("[INFO] %s", message) +} + +// Error 记录错误级别日志 +func (l *Logger) Error(message string) { + l.logger.Printf("[ERROR] %s", message) +} + +// Debug 记录调试级别日志 +func (l *Logger) Debug(message string) { + l.logger.Printf("[DEBUG] %s", message) +} + +// Warn 记录警告级别日志 +func (l *Logger) Warn(message string) { + l.logger.Printf("[WARN] %s", message) +} diff --git a/internal/storage/db/postgres.go b/internal/storage/db/postgres.go index 98d38b2..863269d 100644 --- a/internal/storage/db/postgres.go +++ b/internal/storage/db/postgres.go @@ -5,9 +5,9 @@ package db import ( "fmt" - "log" "time" + "git.huangwc.com/pig/pig-farm-controller/internal/logs" "gorm.io/driver/postgres" "gorm.io/gorm" ) @@ -29,6 +29,9 @@ type PostgresStorage struct { // connMaxLifetime 连接最大生命周期(秒) connMaxLifetime int + + // logger 日志记录器 + logger *logs.Logger } // NewPostgresStorage 创建并返回一个新的PostgreSQL存储实例 @@ -39,25 +42,31 @@ func NewPostgresStorage(connectionString string, maxOpenConns, maxIdleConns, con maxOpenConns: maxOpenConns, maxIdleConns: maxIdleConns, connMaxLifetime: connMaxLifetime, + logger: logs.NewLogger(), } } // Connect 建立与PostgreSQL数据库的连接 // 使用GORM建立数据库连接 func (ps *PostgresStorage) Connect() error { + ps.logger.Info("Connecting to PostgreSQL database") + var err error ps.db, err = gorm.Open(postgres.Open(ps.connectionString), &gorm.Config{}) if err != nil { + ps.logger.Error(fmt.Sprintf("Failed to connect to database: %v", err)) return fmt.Errorf("failed to connect to database: %v", err) } // 测试连接 sqlDB, err := ps.db.DB() if err != nil { + ps.logger.Error(fmt.Sprintf("Failed to get database instance: %v", err)) return fmt.Errorf("failed to get database instance: %v", err) } if err = sqlDB.Ping(); err != nil { + ps.logger.Error(fmt.Sprintf("Failed to ping database: %v", err)) return fmt.Errorf("failed to ping database: %v", err) } @@ -66,7 +75,7 @@ func (ps *PostgresStorage) Connect() error { sqlDB.SetMaxIdleConns(ps.maxIdleConns) sqlDB.SetConnMaxLifetime(time.Duration(ps.connMaxLifetime) * time.Second) - log.Println("Successfully connected to PostgreSQL database") + ps.logger.Info("Successfully connected to PostgreSQL database") return nil } @@ -74,15 +83,19 @@ func (ps *PostgresStorage) Connect() error { // 安全地关闭所有数据库连接 func (ps *PostgresStorage) Disconnect() error { if ps.db != nil { + ps.logger.Info("Disconnecting from PostgreSQL database") + sqlDB, err := ps.db.DB() if err != nil { + ps.logger.Error(fmt.Sprintf("Failed to get database instance: %v", err)) return fmt.Errorf("failed to get database instance: %v", err) } if err := sqlDB.Close(); err != nil { + ps.logger.Error(fmt.Sprintf("Failed to close database connection: %v", err)) return fmt.Errorf("failed to close database connection: %v", err) } - log.Println("Successfully disconnected from PostgreSQL database") + ps.logger.Info("Successfully disconnected from PostgreSQL database") } return nil }