package fxevent import ( "cls/pkg/logger" "go.uber.org/fx/fxevent" ) type LogrusLogger struct { logger.Logger } var _ fxevent.Logger = (*LogrusLogger)(nil) type Option func(*LogrusLogger) *LogrusLogger func NewLogrusLogger(options ...Option) fxevent.Logger { return &LogrusLogger{logger.NewLogger("panoramic")} } func (l *LogrusLogger) LogEvent(event fxevent.Event) { switch e := event.(type) { case *fxevent.OnStartExecuting: l.Info("OnStart hook executing") case *fxevent.OnStartExecuted: if e.Err != nil { l.Errorf("OnStart hook failed:%v", e.Err) } else { l.Infof("OnStart hook executed.caller:%s,callee:%s,runtime:%s", e.CallerName, e.FunctionName, e.Runtime) } case *fxevent.OnStopExecuting: l.Infof("OnStop hook executing.caller:%s,callee:%s.", e.CallerName, e.FunctionName) case *fxevent.OnStopExecuted: case *fxevent.Supplied: case *fxevent.Provided: for _, rtype := range e.OutputTypeNames { if e.ModuleName != "" { l.Infof("provided:constructor:%s,type:%s,private:%v,module:%s", e.ConstructorName, rtype, e.Private, e.ModuleName) } else { l.Infof("provided:constructor:%s,type:%s,private:%v", e.ConstructorName, rtype, e.Private) } } if e.Err != nil { l.Errorf("error encountered while applying options,module:%s:%v", e.ModuleName, e.Err) } case *fxevent.Replaced: case *fxevent.Decorated: case *fxevent.Invoking: case *fxevent.Invoked: case *fxevent.Stopping: l.Infof("received signal:%s", e.Signal.String()) case *fxevent.Stopped: case *fxevent.RollingBack: l.Errorf("start failed, rolling back.err:%v", e.StartErr) case *fxevent.RolledBack: if e.Err != nil { l.Errorf("rollback failed.err:%v", e.Err) } case *fxevent.Started: if e.Err != nil { l.Errorf("start failed:%v", e.Err) } else { l.Info("Started") } case *fxevent.LoggerInitialized: } }