Add log file close and reopen on receipt of SIGUSR1
This commit is contained in:
parent
64b8fc52c3
commit
4e5fcac9cb
12 changed files with 343 additions and 25 deletions
|
@ -15,7 +15,6 @@ import (
|
|||
"regexp"
|
||||
"sort"
|
||||
"sync"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/containous/mux"
|
||||
|
@ -78,7 +77,7 @@ func NewServer(globalConfiguration GlobalConfiguration) *Server {
|
|||
server.signals = make(chan os.Signal, 1)
|
||||
server.stopChan = make(chan bool, 1)
|
||||
server.providers = []provider.Provider{}
|
||||
signal.Notify(server.signals, syscall.SIGINT, syscall.SIGTERM)
|
||||
server.configureSignals()
|
||||
currentConfigurations := make(configs)
|
||||
server.currentConfigurations.Set(currentConfigurations)
|
||||
server.globalConfiguration = globalConfiguration
|
||||
|
@ -426,13 +425,6 @@ func (server *Server) startProviders() {
|
|||
}
|
||||
}
|
||||
|
||||
func (server *Server) listenSignals() {
|
||||
sig := <-server.signals
|
||||
log.Infof("I have to go... %+v", sig)
|
||||
log.Info("Stopping server")
|
||||
server.Stop()
|
||||
}
|
||||
|
||||
func createClientTLSConfig(tlsOption *TLS) (*tls.Config, error) {
|
||||
if tlsOption == nil {
|
||||
return nil, errors.New("no TLS provided")
|
||||
|
|
38
server/server_signals.go
Normal file
38
server/server_signals.go
Normal file
|
@ -0,0 +1,38 @@
|
|||
// +build !windows
|
||||
|
||||
package server
|
||||
|
||||
import (
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"github.com/containous/traefik/log"
|
||||
)
|
||||
|
||||
func (server *Server) configureSignals() {
|
||||
signal.Notify(server.signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGUSR1)
|
||||
}
|
||||
|
||||
func (server *Server) listenSignals() {
|
||||
for {
|
||||
sig := <-server.signals
|
||||
switch sig {
|
||||
case syscall.SIGUSR1:
|
||||
log.Infof("Closing and re-opening log files for rotation: %+v", sig)
|
||||
|
||||
if server.accessLoggerMiddleware != nil {
|
||||
if err := server.accessLoggerMiddleware.Rotate(); err != nil {
|
||||
log.Errorf("Error rotating access log: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
if err := log.RotateFile(); err != nil {
|
||||
log.Errorf("Error rotating error log: %s", err)
|
||||
}
|
||||
default:
|
||||
log.Infof("I have to go... %+v", sig)
|
||||
log.Info("Stopping server")
|
||||
server.Stop()
|
||||
}
|
||||
}
|
||||
}
|
26
server/server_signals_windows.go
Normal file
26
server/server_signals_windows.go
Normal file
|
@ -0,0 +1,26 @@
|
|||
// +build windows
|
||||
|
||||
package server
|
||||
|
||||
import (
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"github.com/containous/traefik/log"
|
||||
)
|
||||
|
||||
func (server *Server) configureSignals() {
|
||||
signal.Notify(server.signals, syscall.SIGINT, syscall.SIGTERM)
|
||||
}
|
||||
|
||||
func (server *Server) listenSignals() {
|
||||
for {
|
||||
sig := <-server.signals
|
||||
switch sig {
|
||||
default:
|
||||
log.Infof("I have to go... %+v", sig)
|
||||
log.Info("Stopping server")
|
||||
server.Stop()
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue