diff --git a/server/channels/app/audit.go b/server/channels/app/audit.go index 6a7a800e58..d59406a6e8 100644 --- a/server/channels/app/audit.go +++ b/server/channels/app/audit.go @@ -4,10 +4,13 @@ package app import ( + "encoding/json" "errors" "fmt" "net/http" + "os" "os/user" + "strings" "github.com/mattermost/mattermost/server/public/model" "github.com/mattermost/mattermost/server/public/shared/mlog" @@ -132,6 +135,16 @@ func (s *Server) configureAudit(adt *audit.Audit, bAllowAdvancedLogging bool) er return fmt.Errorf("invalid config for audit, %w", err) } + // Append additional config from env var; any target name collisions will be overwritten. + additionalJSON := strings.TrimSpace(os.Getenv("MM_EXPERIMENTALAUDITSETTINGS_ADDITIONAL")) + if additionalJSON != "" { + cfgAdditional := make(mlog.LoggerConfiguration) + if err := json.Unmarshal([]byte(additionalJSON), &cfgAdditional); err != nil { + return fmt.Errorf("invalid additional config for audit, %w", err) + } + cfg.Append(cfgAdditional) + } + return adt.Configure(cfg) } diff --git a/server/public/shared/mlog/mlog.go b/server/public/shared/mlog/mlog.go index d9a657c9dd..c4e39bc1b3 100644 --- a/server/public/shared/mlog/mlog.go +++ b/server/public/shared/mlog/mlog.go @@ -248,7 +248,7 @@ func (l *Logger) Configure(cfgFile string, cfgEscaped string, factories *Factori } // ConfigureTargets provides a new configuration for this logger via a `LoggerConfig` map. -// Typically `mlog.Configure` is used instead which accepts JSON formatted configuration. +// `Logger.Configure` can be used instead which accepts JSON formatted configuration. // An optional set of factories can be provided which will be called to create any target // types or formatters not built-in. func (l *Logger) ConfigureTargets(cfg LoggerConfiguration, factories *Factories) error {