// +build !windows package server import ( "os/signal" "syscall" "time" "github.com/containous/traefik/log" ) func (s *Server) configureSignals() { signal.Notify(s.signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGUSR1) } func (s *Server) listenSignals() { for { sig := <-s.signals switch sig { case syscall.SIGUSR1: log.Infof("Closing and re-opening log files for rotation: %+v", sig) if s.accessLoggerMiddleware != nil { if err := s.accessLoggerMiddleware.Rotate(); err != nil { log.Errorf("Error rotating access log: %s", err) } } if err := log.RotateFile(); err != nil { log.Errorf("Error rotating traefik log: %s", err) } default: log.Infof("I have to go... %+v", sig) reqAcceptGraceTimeOut := time.Duration(s.globalConfiguration.LifeCycle.RequestAcceptGraceTimeout) if reqAcceptGraceTimeOut > 0 { log.Infof("Waiting %s for incoming requests to cease", reqAcceptGraceTimeOut) time.Sleep(reqAcceptGraceTimeOut) } log.Info("Stopping server gracefully") s.Stop() } } }