fix(logger): Move extrafields from gelf to global system
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Matthieu 'JP' DERASSE 2023-01-09 22:35:26 +00:00
parent 44ff19e779
commit 8aedb85605
Signed by: mderasse
GPG Key ID: 55141C777B16A705
3 changed files with 31 additions and 14 deletions

View File

@ -8,10 +8,10 @@ import (
const LoggerKey = "mainLogger"
func AddMainLogger(ctx context.Context, logger *logrus.Logger) context.Context {
func AddMainLogger(ctx context.Context, logger *logrus.Entry) context.Context {
return context.WithValue(ctx, LoggerKey, logger)
}
func GetLogger(ctx context.Context) *logrus.Logger {
return ctx.Value(LoggerKey).(*logrus.Logger)
func GetLogger(ctx context.Context) *logrus.Entry {
return ctx.Value(LoggerKey).(*logrus.Entry)
}

View File

@ -26,11 +26,12 @@ const defaultSecretName = "log"
// ConfigStruct represent the configuration of our logger system.
type ConfigStruct struct {
Level *string `yaml:"level"`
EnableStdOut *bool `yaml:"ensable_std_out"`
Providers []ProviderName `yaml:"providers"`
FileConfig *file.ConfigStruct `yaml:"file_config"`
GelfConfig *gelf.ConfigStruct `yaml:"gelf_config"`
EnableStdOut *bool `yaml:"ensable_std_out"`
ExtrasFields map[string]interface{} `yaml:"extra_fields"`
FileConfig *file.ConfigStruct `yaml:"file_config"`
GelfConfig *gelf.ConfigStruct `yaml:"gelf_config"`
Level *string `yaml:"level"`
Providers []ProviderName `yaml:"providers"`
}
func newDefaultConfig() *ConfigStruct {
@ -111,6 +112,18 @@ func (c *ConfigStruct) applyEnv() error {
c.Providers = providers
}
// Extra Fields
if v := os.Getenv(fmt.Sprintf("%s%s", envPrefix, "EXTRA_FIELDS")); v != "" {
extraFieldsPart := strings.Split(v, ",")
for _, efp := range extraFieldsPart {
extraFieldKV := strings.SplitN(efp, ":", 1)
if len(extraFieldKV) != 2 {
return errors.NotValidf(fmt.Sprintf("Invalid extra_field %s in environment variable. Should be a key1:value1,key2:value2 format", efp))
}
c.ExtrasFields[extraFieldKV[0]] = extraFieldKV[1]
}
}
return nil
}

View File

@ -12,7 +12,7 @@ import (
)
// Init will try to initialize logger by trying to retrieve config from multiple source.
func Init() (*logrus.Logger, error) {
func Init() (*logrus.Entry, error) {
// loading configuration
c, err := loadConfig()
@ -24,7 +24,7 @@ func Init() (*logrus.Logger, error) {
}
// InitFromCustomVaultSecret will initialize logger with a vault secret.
func InitFromCustomVaultSecret(secret string) (*logrus.Logger, error) {
func InitFromCustomVaultSecret(secret string) (*logrus.Entry, error) {
c, err := loadConfigFromVault(secret)
if err != nil {
@ -35,7 +35,7 @@ func InitFromCustomVaultSecret(secret string) (*logrus.Logger, error) {
}
// InitFromCustomFile will initialize logger with a config file.
func InitFromCustomFile(path string) (*logrus.Logger, error) {
func InitFromCustomFile(path string) (*logrus.Entry, error) {
c, err := loadConfigFromFile(path)
if err != nil {
@ -45,7 +45,7 @@ func InitFromCustomFile(path string) (*logrus.Logger, error) {
return initFromSource(c)
}
func initFromSource(c *ConfigStruct) (*logrus.Logger, error) {
func initFromSource(c *ConfigStruct) (*logrus.Entry, error) {
err := c.applyEnv()
if err != nil {
return nil, errors.Trace(err)
@ -57,7 +57,7 @@ func initFromSource(c *ConfigStruct) (*logrus.Logger, error) {
}
// InitFromCustomConfig will initialize logger from a gaven config.
func InitFromCustomConfig(c *ConfigStruct) (*logrus.Logger, error) {
func InitFromCustomConfig(c *ConfigStruct) (*logrus.Entry, error) {
err := c.IsValid()
if err != nil {
@ -100,5 +100,9 @@ func InitFromCustomConfig(c *ConfigStruct) (*logrus.Logger, error) {
}
}
return log, nil
return c.applyExtraFields(logrus.NewEntry(log)), nil
}
func (c *ConfigStruct) applyExtraFields(l *logrus.Entry) *logrus.Entry {
return l.WithFields(c.ExtrasFields)
}