package main import ( "fmt" "os" "www.thenautilus.net/cgit/go-example/config" factorypkg "www.thenautilus.net/cgit/go-example/factory" "www.thenautilus.net/cgit/go-example/logging" ) func main() { // this is the main binary, so the config file is in // the same directory as the executable config, err := config.GetMainConfig(".") if err != nil { fmt.Fprintf(os.Stderr, "%s\n", err) os.Exit(1) } log := logging.Logger(config.Logger) log.Info().Object("config", &config).Msg("configuration") factory := factorypkg.New(log, &config) something := factory.Something() err = something.DoSomething() if err != nil { log.Error().Err(err).Msg("Can't do the thing") } }