增加日志
This commit is contained in:
@@ -75,7 +75,7 @@ func NewApplication(configPath string) (*Application, error) {
|
|||||||
pigBatchRepo := repository.NewGormPigBatchRepository(storage.GetDB())
|
pigBatchRepo := repository.NewGormPigBatchRepository(storage.GetDB())
|
||||||
|
|
||||||
// 初始化事务管理器
|
// 初始化事务管理器
|
||||||
unitOfWork := repository.NewGormUnitOfWork(storage.GetDB())
|
unitOfWork := repository.NewGormUnitOfWork(storage.GetDB(), logger)
|
||||||
|
|
||||||
// --- 业务逻辑处理器初始化 ---
|
// --- 业务逻辑处理器初始化 ---
|
||||||
pigFarmService := service.NewPigFarmService(pigFarmRepo, logger)
|
pigFarmService := service.NewPigFarmService(pigFarmRepo, logger)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package repository
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -16,30 +17,30 @@ type UnitOfWork interface {
|
|||||||
|
|
||||||
// gormUnitOfWork 是 UnitOfWork 接口的 GORM 实现
|
// gormUnitOfWork 是 UnitOfWork 接口的 GORM 实现
|
||||||
type gormUnitOfWork struct {
|
type gormUnitOfWork struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
|
logger *logs.Logger // 添加日志记录器
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGormUnitOfWork 创建一个新的 gormUnitOfWork 实例
|
// NewGormUnitOfWork 创建一个新的 gormUnitOfWork 实例
|
||||||
func NewGormUnitOfWork(db *gorm.DB) UnitOfWork {
|
func NewGormUnitOfWork(db *gorm.DB, logger *logs.Logger) UnitOfWork {
|
||||||
return &gormUnitOfWork{db: db}
|
return &gormUnitOfWork{db: db, logger: logger}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExecuteInTransaction 实现了 UnitOfWork 接口的事务执行逻辑
|
// ExecuteInTransaction 实现了 UnitOfWork 接口的事务执行逻辑
|
||||||
func (u *gormUnitOfWork) ExecuteInTransaction(fn func(tx *gorm.DB) error) error {
|
func (u *gormUnitOfWork) ExecuteInTransaction(fn func(tx *gorm.DB) error) error {
|
||||||
tx := u.db.Begin()
|
tx := u.db.Begin()
|
||||||
if tx.Error != nil {
|
if tx.Error != nil {
|
||||||
|
u.logger.Errorf("开启数据库事务失败: %v", tx.Error) // 记录错误日志
|
||||||
return fmt.Errorf("开启事务失败: %w", tx.Error)
|
return fmt.Errorf("开启事务失败: %w", tx.Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
// 可以选择在此处记录 panic 日志
|
u.logger.Errorf("事务中发生 panic,已回滚: %v", r) // 记录 panic 日志
|
||||||
// u.logger.Errorf("事务中发生 panic,已回滚: %v", r)
|
|
||||||
} else if tx.Error != nil { // 如果函数执行过程中返回错误,或者事务本身有错误,则回滚
|
} else if tx.Error != nil { // 如果函数执行过程中返回错误,或者事务本身有错误,则回滚
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
// 可以选择在此处记录错误日志
|
u.logger.Errorf("事务执行失败,已回滚: %v", tx.Error) // 记录错误日志
|
||||||
// u.logger.Errorf("事务执行失败,已回滚: %v", tx.Error)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@@ -51,6 +52,7 @@ func (u *gormUnitOfWork) ExecuteInTransaction(fn func(tx *gorm.DB) error) error
|
|||||||
|
|
||||||
// 提交事务
|
// 提交事务
|
||||||
if err := tx.Commit().Error; err != nil {
|
if err := tx.Commit().Error; err != nil {
|
||||||
|
u.logger.Errorf("提交数据库事务失败: %v", err) // 记录错误日志
|
||||||
return fmt.Errorf("提交事务失败: %w", err)
|
return fmt.Errorf("提交事务失败: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user