added poseidon with aws to k8s changes
This commit is contained in:
41
pkg/logging/context_hook.go
Normal file
41
pkg/logging/context_hook.go
Normal file
@ -0,0 +1,41 @@
|
||||
package logging
|
||||
|
||||
import (
|
||||
"github.com/openHPI/poseidon/pkg/dto"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// ContextHook logs the values referenced by the of dto.LoggedContextKeys.
|
||||
// By default Logrus does not log the values stored in the passed context.
|
||||
type ContextHook struct{}
|
||||
|
||||
// Fire is triggered on new log entries.
|
||||
func (hook *ContextHook) Fire(entry *logrus.Entry) error {
|
||||
if entry.Context != nil {
|
||||
injectContextValuesIntoData(entry)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func injectContextValuesIntoData(entry *logrus.Entry) {
|
||||
for _, key := range dto.LoggedContextKeys {
|
||||
value := entry.Context.Value(key)
|
||||
_, valueExisting := entry.Data[string(key)]
|
||||
if !valueExisting && value != nil {
|
||||
entry.Data[string(key)] = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Levels returns all levels this hook should be registered to.
|
||||
func (hook *ContextHook) Levels() []logrus.Level {
|
||||
return []logrus.Level{
|
||||
logrus.PanicLevel,
|
||||
logrus.FatalLevel,
|
||||
logrus.ErrorLevel,
|
||||
logrus.WarnLevel,
|
||||
logrus.InfoLevel,
|
||||
logrus.DebugLevel,
|
||||
logrus.TraceLevel,
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user