func initConfig()

in plc4go/tools/plc4xpcapanalyzer/cmd/root.go [69:121]


func initConfig() {
	if config.RootConfigInstance.CfgFile != "" {
		// Use config file from the flag.
		viper.SetConfigFile(config.RootConfigInstance.CfgFile)
	} else {
		// Find user config directory.
		home, err := os.UserConfigDir()
		cobra.CheckErr(err)

		viper.AddConfigPath(home)
		viper.SetConfigType("yaml")
		viper.SetConfigName("plc4xpcapanalyzer-viper")
	}

	viper.AutomaticEnv() // read in environment variables that match

	// If a config file is found, read it in.
	if err := viper.ReadInConfig(); err == nil {
		_, _ = fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed())
	}

	zerolog.ErrorStackMarshaler = pkgerrors.MarshalStack
	if config.RootConfigInstance.LogType == "text" {
		log.Logger = log.
			//// Enable below if you want to see the filenames
			//With().Caller().Logger().
			Output(zerolog.NewConsoleWriter(
				func(w *zerolog.ConsoleWriter) {
					w.Out = os.Stderr
				},
				func(w *zerolog.ConsoleWriter) {
					w.FormatFieldValue = func(i interface{}) string {
						if aString, ok := i.(string); ok && strings.Contains(aString, "\\n") {
							return fmt.Sprintf("\x1b[%dm%v\x1b[0m", 31, "see below")
						}
						return fmt.Sprintf("%s", i)
					}
					w.FormatExtra = func(m map[string]interface{}, buffer *bytes.Buffer) error {
						for key, i := range m {
							if aString, ok := i.(string); ok && strings.Contains(aString, "\n") {
								buffer.WriteString("\n")
								buffer.WriteString(fmt.Sprintf("\x1b[%dm%v\x1b[0m", 32, "field "+key))
								buffer.WriteString(":\n" + aString)
							}
						}
						return nil
					}
				},
			),
			).
			Level(parseLogLevel())
	}
}