2025-06-10 17:50:46 +08:00

44 lines
1.1 KiB
Go

package bootstrap
import (
"context"
"ifms/internal/config"
"ifms/pkg/gormx"
"ifms/pkg/logging"
"github.com/spf13/cast"
)
func initLoggerHook(_ context.Context, cfg *logging.HookConfig) (*logging.Hook, error) {
extra := cfg.Extra
if extra == nil {
extra = make(map[string]string)
}
extra["appname"] = config.C.General.AppName
switch cfg.Type {
case "gorm":
db, err := gormx.New(gormx.Config{
Debug: cast.ToBool(cfg.Options["Debug"]),
DBType: cast.ToString(cfg.Options["DBType"]),
DSN: cast.ToString(cfg.Options["DSN"]),
MaxLifetime: cast.ToInt(cfg.Options["MaxLifetime"]),
MaxIdleTime: cast.ToInt(cfg.Options["MaxIdleTime"]),
MaxOpenConns: cast.ToInt(cfg.Options["MaxOpenConns"]),
MaxIdleConns: cast.ToInt(cfg.Options["MaxIdleConns"]),
TablePrefix: config.C.Storage.DB.TablePrefix,
})
if err != nil {
return nil, err
}
hook := logging.NewHook(logging.NewGormHook(db),
logging.SetHookExtra(cfg.Extra),
logging.SetHookMaxJobs(cfg.MaxBuffer),
logging.SetHookMaxWorkers(cfg.MaxThread))
return hook, nil
default:
return nil, nil
}
}