From 686c2fbab7607d42183ae685a27ea3d7dce8c3f6 Mon Sep 17 00:00:00 2001 From: Christopher Speller Date: Fri, 27 Apr 2018 12:49:45 -0700 Subject: Structured logging (#8673) * Implementing structured logging * Changes to en.json to allow refactor to run. * Fixing global logger * Structured logger initalization. * Add caller. * Do some log redirection. * Auto refactor * Cleaning up l4g reference and removing dependancy. * Removing junk. * Copyright headers. * Fixing tests * Revert "Changes to en.json to allow refactor to run." This reverts commit fd8249e99bcad0231e6ea65cd77c32aae9a54026. * Fixing some auto refactor strangeness and typo. * Making keys more human readable. --- app/server.go | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'app/server.go') diff --git a/app/server.go b/app/server.go index e89041ebe..7d229201d 100644 --- a/app/server.go +++ b/app/server.go @@ -15,12 +15,12 @@ import ( "strings" "time" - l4g "github.com/alecthomas/log4go" "github.com/gorilla/handlers" "github.com/gorilla/mux" "github.com/pkg/errors" "golang.org/x/crypto/acme/autocert" + "github.com/mattermost/mattermost-server/mlog" "github.com/mattermost/mattermost-server/model" "github.com/mattermost/mattermost-server/store" "github.com/mattermost/mattermost-server/utils" @@ -50,8 +50,8 @@ type RecoveryLogger struct { } func (rl *RecoveryLogger) Println(i ...interface{}) { - l4g.Error("Please check the std error output for the stack trace") - l4g.Error(i) + mlog.Error("Please check the std error output for the stack trace") + mlog.Error(fmt.Sprint(i)) } type CorsWrapper struct { @@ -97,12 +97,12 @@ func redirectHTTPToHTTPS(w http.ResponseWriter, r *http.Request) { } func (a *App) StartServer() error { - l4g.Info(utils.T("api.server.start_server.starting.info")) + mlog.Info("Starting Server...") var handler http.Handler = &CorsWrapper{a.Config, a.Srv.Router} if *a.Config().RateLimitSettings.Enable { - l4g.Info(utils.T("api.server.start_server.rate.info")) + mlog.Info("RateLimiter is enabled") rateLimiter, err := NewRateLimiter(&a.Config().RateLimitSettings) if err != nil { @@ -117,6 +117,7 @@ func (a *App) StartServer() error { Handler: handlers.RecoveryHandler(handlers.RecoveryLogger(&RecoveryLogger{}), handlers.PrintRecoveryStack(true))(handler), ReadTimeout: time.Duration(*a.Config().ServiceSettings.ReadTimeout) * time.Second, WriteTimeout: time.Duration(*a.Config().ServiceSettings.WriteTimeout) * time.Second, + ErrorLog: a.Log.StdLog(mlog.String("source", "httpserver")), } addr := *a.Config().ServiceSettings.ListenAddress @@ -135,7 +136,7 @@ func (a *App) StartServer() error { } a.Srv.ListenAddr = listener.Addr().(*net.TCPAddr) - l4g.Info(utils.T("api.server.start_server.listening.info"), listener.Addr().String()) + mlog.Info(fmt.Sprintf("Server is listening on %v", listener.Addr().String())) // Migration from old let's encrypt library if *a.Config().ServiceSettings.UseLetsEncrypt { @@ -151,24 +152,33 @@ func (a *App) StartServer() error { if *a.Config().ServiceSettings.Forward80To443 { if host, port, err := net.SplitHostPort(addr); err != nil { - l4g.Error("Unable to setup forwarding: " + err.Error()) + mlog.Error("Unable to setup forwarding: " + err.Error()) } else if port != "443" { return fmt.Errorf(utils.T("api.server.start_server.forward80to443.enabled_but_listening_on_wrong_port"), port) } else { httpListenAddress := net.JoinHostPort(host, "http") if *a.Config().ServiceSettings.UseLetsEncrypt { - go http.ListenAndServe(httpListenAddress, m.HTTPHandler(nil)) + server := &http.Server{ + Addr: httpListenAddress, + Handler: m.HTTPHandler(nil), + ErrorLog: a.Log.StdLog(mlog.String("source", "le_forwarder_server")), + } + go server.ListenAndServe() } else { go func() { redirectListener, err := net.Listen("tcp", httpListenAddress) if err != nil { - l4g.Error("Unable to setup forwarding: " + err.Error()) + mlog.Error("Unable to setup forwarding: " + err.Error()) return } defer redirectListener.Close() - http.Serve(redirectListener, http.HandlerFunc(redirectHTTPToHTTPS)) + server := &http.Server{ + Handler: handler, + ErrorLog: a.Log.StdLog(mlog.String("source", "forwarder_server")), + } + server.Serve(redirectListener) }() } } @@ -197,7 +207,7 @@ func (a *App) StartServer() error { err = a.Srv.Server.Serve(listener) } if err != nil && err != http.ErrServerClosed { - l4g.Critical(utils.T("api.server.start_server.starting.critical"), err) + mlog.Critical(fmt.Sprintf("Error starting server, err:%v", err)) time.Sleep(time.Second) } close(a.Srv.didFinishListen) @@ -213,7 +223,7 @@ func (a *App) StopServer() { didShutdown := false for a.Srv.didFinishListen != nil && !didShutdown { if err := a.Srv.Server.Shutdown(ctx); err != nil { - l4g.Warn(err.Error()) + mlog.Warn(err.Error()) } timer := time.NewTimer(time.Millisecond * 50) select { -- cgit v1.2.3-1-g7c22