MM-22784 Advanced logging config for audit (#15076)

Adds the advanced logging config for audit. Existing support for auditing to a single file remains for E0 and E10 licenses instances, and a new config item ExperimentalAuditSettings.AdvancedLoggingConfig is added that behaves like LogSettings.AdvancedLoggingConfig.

Supported destinations:

- file
- syslog (with out without TLS)
- raw TCP socket (with out without TLS)

ExperimentalAuditSettings.AdvancedLoggingConfig can contain a filespec to a config file, a database DSN, or JSON.

Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Claudio Costa <cstcld91@gmail.com>
Этот коммит содержится в:
Doug Lauder
2020-07-22 18:48:46 -04:00
коммит произвёл GitHub
родитель b372b98aca
Коммит 56fb31f06f
12 изменённых файлов: 144 добавлений и 157 удалений

Просмотреть файл

@@ -39,30 +39,35 @@ type LogTargetCfg map[string]*LogTarget
type LogrCleanup func() error
func newLogr(targets LogTargetCfg) (*logr.Logger, error) {
var errs error
lgr := logr.Logr{}
lgr := &logr.Logr{}
lgr.OnExit = func(int) {}
lgr.OnPanic = func(interface{}) {}
lgr.OnLoggerError = onLoggerError
lgr.OnQueueFull = onQueueFull
lgr.OnTargetQueueFull = onTargetQueueFull
err := logrAddTargets(lgr, targets)
logger := lgr.NewLogger()
return &logger, err
}
func logrAddTargets(lgr *logr.Logr, targets LogTargetCfg) error {
var errs error
for name, t := range targets {
target, err := newLogrTarget(name, t)
target, err := NewLogrTarget(name, t)
if err != nil {
errs = multierror.Append(err)
continue
}
lgr.AddTarget(target)
}
logger := lgr.NewLogger()
return &logger, errs
return errs
}
func newLogrTarget(name string, t *LogTarget) (logr.Target, error) {
// NewLogrTarget creates a `logr.Target` based on a target config.
// Can be used when parsing custom config files, or when programmatically adding
// built-in targets. Use `mlog.AddTarget` to add custom targets.
func NewLogrTarget(name string, t *LogTarget) (logr.Target, error) {
formatter, err := newFormatter(name, t.Format)
if err != nil {
return nil, err