func()

in plugins/inputs/logfile/fileconfig.go [111:175]


func (config *FileConfig) init() error {
	var err error
	if !(config.Encoding == "" || config.Encoding == "utf_8" || config.Encoding == "utf-8" || config.Encoding == "utf8" || config.Encoding == "ascii") {
		if config.Enc, _ = charset.Lookup(config.Encoding); config.Enc == nil {
			if config.Enc, _ = ianaindex.IANA.Encoding(config.Encoding); config.Enc == nil {
				msg := fmt.Sprintf("E! the encoding %s is not supported.", config.Encoding)
				log.Print(msg)
				return errors.New(msg)
			}
		}
	}
	//If the log group name is not specified, we will use the part before the last dot in the file path as the log group name.
	if config.LogGroupName == "" && !config.PublishMultiLogs {
		config.LogGroupName = logGroupName(config.FilePath)
	}
	//If the timezone info is not specified, we will use the Local timezone as default value.
	if config.Timezone == time.UTC.String() {
		config.TimezoneLoc = time.UTC
	} else {
		config.TimezoneLoc = time.Local
	}

	if config.TimestampRegex != "" {
		if config.TimestampRegexP, err = regexp.Compile(config.TimestampRegex); err != nil {
			return fmt.Errorf("timestamp_regex has issue, regexp: Compile( %v ): %v", config.TimestampRegex, err.Error())
		}
	}

	if config.MultiLineStartPattern == "" {
		config.MultiLineStartPattern = "^[\\S]"
	}
	if config.MultiLineStartPattern == "{timestamp_regex}" {
		config.MultiLineStartPatternP = config.TimestampRegexP
	} else {
		if config.MultiLineStartPatternP, err = regexp.Compile(config.MultiLineStartPattern); err != nil {
			return fmt.Errorf("multi_line_start_pattern has issue, regexp: Compile( %v ): %v", config.MultiLineStartPattern, err.Error())
		}
	}

	if config.Blacklist != "" {
		if config.BlacklistRegexP, err = regexp.Compile(config.Blacklist); err != nil {
			return fmt.Errorf("blacklist regex has issue, regexp: Compile( %v ): %v", config.Blacklist, err.Error())
		}
	}

	if config.MaxEventSize == 0 {
		config.MaxEventSize = defaultMaxEventSize
	}

	if config.TruncateSuffix == "" {
		config.TruncateSuffix = defaultTruncateSuffix
	}
	if config.RetentionInDays == 0 {
		config.RetentionInDays = -1
	}

	for _, f := range config.Filters {
		err = f.init()
		if err != nil {
			return err
		}
	}

	return nil
}