gocommon/log/hooks/file/config.go

43 lines
1023 B
Go
Raw Normal View History

2022-11-26 20:45:32 +00:00
package file
import (
"github.com/asaskevich/govalidator"
"github.com/juju/errors"
)
// ConfigStruct is the configuration for File Provider.
type ConfigStruct struct {
Filename string `yaml:"filename"`
MaxLines int `yaml:"max_lines"`
MaxSize int `yaml:"max_size"`
Daily bool `yaml:"daily"`
MaxDays int `yaml:"max_days"`
Rotate bool `yaml:"rotate"`
Perm string `yaml:"perm"`
RotatePerm string `yaml:"rotate_perm"`
}
// IsValid will check that the File configuration is valid.
func (c *ConfigStruct) IsValid() error {
if c.Filename == "" {
return errors.NotValidf("Path is empty in File configuration")
} else if isValid, _ := govalidator.IsFilePath(c.Filename); !isValid {
return errors.NotValidf("Path is invalid in File configuration")
}
return nil
}
// ApplyDefault will check config and apply default on mandatory values.
func (c *ConfigStruct) ApplyDefault() {
if c.Perm == "" {
c.Perm = "0660"
}
if c.RotatePerm == "" {
c.RotatePerm = "0440"
}
}