增加日志
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