实现日志

This commit is contained in:
2025-09-07 17:53:15 +08:00
parent cf00a74008
commit 2aa2e9bbdd
2 changed files with 57 additions and 3 deletions

41
internal/logs/logs.go Normal file
View File

@@ -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)
}

View File

@@ -5,9 +5,9 @@ package db
import ( import (
"fmt" "fmt"
"log"
"time" "time"
"git.huangwc.com/pig/pig-farm-controller/internal/logs"
"gorm.io/driver/postgres" "gorm.io/driver/postgres"
"gorm.io/gorm" "gorm.io/gorm"
) )
@@ -29,6 +29,9 @@ type PostgresStorage struct {
// connMaxLifetime 连接最大生命周期(秒) // connMaxLifetime 连接最大生命周期(秒)
connMaxLifetime int connMaxLifetime int
// logger 日志记录器
logger *logs.Logger
} }
// NewPostgresStorage 创建并返回一个新的PostgreSQL存储实例 // NewPostgresStorage 创建并返回一个新的PostgreSQL存储实例
@@ -39,25 +42,31 @@ func NewPostgresStorage(connectionString string, maxOpenConns, maxIdleConns, con
maxOpenConns: maxOpenConns, maxOpenConns: maxOpenConns,
maxIdleConns: maxIdleConns, maxIdleConns: maxIdleConns,
connMaxLifetime: connMaxLifetime, connMaxLifetime: connMaxLifetime,
logger: logs.NewLogger(),
} }
} }
// Connect 建立与PostgreSQL数据库的连接 // Connect 建立与PostgreSQL数据库的连接
// 使用GORM建立数据库连接 // 使用GORM建立数据库连接
func (ps *PostgresStorage) Connect() error { func (ps *PostgresStorage) Connect() error {
ps.logger.Info("Connecting to PostgreSQL database")
var err error var err error
ps.db, err = gorm.Open(postgres.Open(ps.connectionString), &gorm.Config{}) ps.db, err = gorm.Open(postgres.Open(ps.connectionString), &gorm.Config{})
if err != nil { 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) return fmt.Errorf("failed to connect to database: %v", err)
} }
// 测试连接 // 测试连接
sqlDB, err := ps.db.DB() sqlDB, err := ps.db.DB()
if err != nil { 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) return fmt.Errorf("failed to get database instance: %v", err)
} }
if err = sqlDB.Ping(); err != nil { 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) return fmt.Errorf("failed to ping database: %v", err)
} }
@@ -66,7 +75,7 @@ func (ps *PostgresStorage) Connect() error {
sqlDB.SetMaxIdleConns(ps.maxIdleConns) sqlDB.SetMaxIdleConns(ps.maxIdleConns)
sqlDB.SetConnMaxLifetime(time.Duration(ps.connMaxLifetime) * time.Second) 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 return nil
} }
@@ -74,15 +83,19 @@ func (ps *PostgresStorage) Connect() error {
// 安全地关闭所有数据库连接 // 安全地关闭所有数据库连接
func (ps *PostgresStorage) Disconnect() error { func (ps *PostgresStorage) Disconnect() error {
if ps.db != nil { if ps.db != nil {
ps.logger.Info("Disconnecting from PostgreSQL database")
sqlDB, err := ps.db.DB() sqlDB, err := ps.db.DB()
if err != nil { 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) return fmt.Errorf("failed to get database instance: %v", err)
} }
if err := sqlDB.Close(); err != nil { 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) 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 return nil
} }