Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions pkg/apperrors/apperrors.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import "errors"
var (
ErrTemplateEmpty = errors.New("template cannot be empty")
ErrTimestampFormatEmpty = errors.New("timestamp format cannot be empty")
ErrInvalidTimestampFormat = errors.New("invalid timestamp format")
ErrInvalidTimezone = errors.New("invalid timezone")
ErrInvalidColor = errors.New("invalid color")
ErrInvalidUserFormat = errors.New("invalid user format")
ErrInvalidPIDFormat = errors.New("invalid PID format")
Expand All @@ -16,6 +18,8 @@ var (
ErrInvalidStderrLogLevel = errors.New("invalid default stderr log level")
ErrInvalidLogLevel = errors.New("invalid log level")
ErrNoDetectionKeywords = errors.New("log level has no detection keywords")
ErrEmptyKeyword = errors.New("empty keyword in detection keywords")
ErrDetectionDisabledWithKeywords = errors.New("detection disabled but keywords are configured")
)

// Command line errors.
Expand Down
13 changes: 13 additions & 0 deletions pkg/config/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,11 @@ func (c *Config) validateLogLevel() error {
apperrors.ErrInvalidStderrLogLevel, c.LogLevel.DefaultStderr, strings.Join(validLevels, ", "))
}

// Check for conflicting configuration: detection disabled but keywords provided
if !c.LogLevel.Detection.Enabled && len(c.LogLevel.Detection.Keywords) > 0 {
return apperrors.ErrDetectionDisabledWithKeywords
}

for level, keywords := range c.LogLevel.Detection.Keywords {
if !isValidLogLevel(strings.ToUpper(level), validLevels) {
return fmt.Errorf("%w '%s' in detection keywords", apperrors.ErrInvalidLogLevel, level)
Expand All @@ -161,6 +166,14 @@ func (c *Config) validateLogLevel() error {
if len(keywords) == 0 {
return fmt.Errorf("%w '%s'", apperrors.ErrNoDetectionKeywords, level)
}

// Check for empty strings in keywords
//nolint:modernize // Need to return error with level context, not just check existence
for _, keyword := range keywords {
if keyword == "" {
return fmt.Errorf("%w for level '%s'", apperrors.ErrEmptyKeyword, level)
}
}
}

return nil
Expand Down
Loading
Loading