mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
Improvements to logging start-up. (#26649)
Improvements to logging start-up. - comments have been added - order of configuration is adjusted to allow the main logger to capture errors in notification logger - redundant logger initialization removed; no need to configure the logger just to replace the configuration immediately after
This commit is contained in:
parent
dc36e42448
commit
f45fec784b
@ -135,6 +135,8 @@ func (ps *PlatformService) ConfigureLogger(name string, logger *mlog.Logger, log
|
|||||||
// Advanced logging is E20 only, however logging must be initialized before the license
|
// Advanced logging is E20 only, however logging must be initialized before the license
|
||||||
// file is loaded. If no valid E20 license exists then advanced logging will be
|
// file is loaded. If no valid E20 license exists then advanced logging will be
|
||||||
// shutdown once license is loaded/checked.
|
// shutdown once license is loaded/checked.
|
||||||
|
var resultLevel = mlog.LvlInfo
|
||||||
|
var resultMsg string
|
||||||
var err error
|
var err error
|
||||||
var logConfigSrc config.LogConfigSrc
|
var logConfigSrc config.LogConfigSrc
|
||||||
dsn := logSettings.GetAdvancedLoggingConfig()
|
dsn := logSettings.GetAdvancedLoggingConfig()
|
||||||
@ -143,9 +145,10 @@ func (ps *PlatformService) ConfigureLogger(name string, logger *mlog.Logger, log
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid config source for %s, %w", name, err)
|
return fmt.Errorf("invalid config source for %s, %w", name, err)
|
||||||
}
|
}
|
||||||
ps.logger.Info("Loaded configuration for "+name, mlog.String("source", dsn))
|
resultMsg = fmt.Sprintf("Loaded Advanced Logging configuration for %s: %s", name, string(dsn))
|
||||||
} else {
|
} else {
|
||||||
ps.logger.Debug("Advanced logging config not provided for " + name)
|
resultLevel = mlog.LvlDebug
|
||||||
|
resultMsg = fmt.Sprintf("Advanced logging config not provided for %s", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg, err := config.MloggerConfigFromLoggerConfig(logSettings, logConfigSrc, getPath)
|
cfg, err := config.MloggerConfigFromLoggerConfig(logSettings, logConfigSrc, getPath)
|
||||||
@ -153,9 +156,15 @@ func (ps *PlatformService) ConfigureLogger(name string, logger *mlog.Logger, log
|
|||||||
return fmt.Errorf("invalid config source for %s, %w", name, err)
|
return fmt.Errorf("invalid config source for %s, %w", name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this will remove any existing targets and replace with those defined in cfg.
|
||||||
if err := logger.ConfigureTargets(cfg, nil); err != nil {
|
if err := logger.ConfigureTargets(cfg, nil); err != nil {
|
||||||
return fmt.Errorf("invalid config for %s, %w", name, err)
|
return fmt.Errorf("invalid config for %s, %w", name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if resultMsg != "" {
|
||||||
|
ps.Log().Log(resultLevel, resultMsg)
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@ -38,17 +37,24 @@ func (ps *PlatformService) initLogging() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
logCfg, err := config.MloggerConfigFromLoggerConfig(&ps.Config().LogSettings, nil, config.GetLogFileLocation)
|
// configure app logger. This will replace any existing targets with new ones as defined in the config.
|
||||||
if err != nil {
|
if err := ps.ConfigureLogger("logging", ps.logger, &ps.Config().LogSettings, config.GetLogFileLocation); err != nil {
|
||||||
|
// if the config is locked then a unit test has already configured and locked the logger; not an error.
|
||||||
|
if !errors.Is(err, mlog.ErrConfigurationLock) {
|
||||||
|
// revert to default logger if the config is invalid
|
||||||
|
mlog.InitGlobalLogger(nil)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if errCfg := ps.logger.ConfigureTargets(logCfg, nil); errCfg != nil {
|
|
||||||
return fmt.Errorf("failed to configure test logger: %w", errCfg)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// redirect default Go logger to app logger.
|
||||||
|
ps.logger.RedirectStdLog(mlog.LvlStdLog)
|
||||||
|
|
||||||
|
// use the app logger as the global logger (eventually remove all instances of global logging).
|
||||||
|
mlog.InitGlobalLogger(ps.logger)
|
||||||
|
|
||||||
// create notification logger if needed
|
// create notification logger if needed
|
||||||
if ps.notificationsLogger == nil {
|
if ps.notificationsLogger == nil {
|
||||||
l, err := mlog.NewLogger()
|
l, err := mlog.NewLogger()
|
||||||
@ -58,21 +64,7 @@ func (ps *PlatformService) initLogging() error {
|
|||||||
ps.notificationsLogger = l.With(mlog.String("logSource", "notifications"))
|
ps.notificationsLogger = l.With(mlog.String("logSource", "notifications"))
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := ps.ConfigureLogger("logging", ps.logger, &ps.Config().LogSettings, config.GetLogFileLocation); err != nil {
|
// configure notification logger
|
||||||
// if the config is locked then a unit test has already configured and locked the logger; not an error.
|
|
||||||
if !errors.Is(err, mlog.ErrConfigurationLock) {
|
|
||||||
// revert to default logger if the config is invalid
|
|
||||||
mlog.InitGlobalLogger(nil)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Redirect default Go logger to app logger.
|
|
||||||
ps.logger.RedirectStdLog(mlog.LvlStdLog)
|
|
||||||
|
|
||||||
// Use the app logger as the global logger (eventually remove all instances of global logging).
|
|
||||||
mlog.InitGlobalLogger(ps.logger)
|
|
||||||
|
|
||||||
notificationLogSettings := config.GetLogSettingsFromNotificationsLogSettings(&ps.Config().NotificationLogSettings)
|
notificationLogSettings := config.GetLogSettingsFromNotificationsLogSettings(&ps.Config().NotificationLogSettings)
|
||||||
if err := ps.ConfigureLogger("notification logging", ps.notificationsLogger, notificationLogSettings, config.GetNotificationsLogFileLocation); err != nil {
|
if err := ps.ConfigureLogger("notification logging", ps.notificationsLogger, notificationLogSettings, config.GetNotificationsLogFileLocation); err != nil {
|
||||||
if !errors.Is(err, mlog.ErrConfigurationLock) {
|
if !errors.Is(err, mlog.ErrConfigurationLock) {
|
||||||
|
Loading…
Reference in New Issue
Block a user