package main import ( "flag" "log/slog" "net/http" "os" ) // for application wide dependencies type application struct { logger *slog.Logger } // main it's the snippetbox webapp func main() { // configuration addr := flag.String("addr", ":4000", "HTTP network address") logfmt := flag.String("logfmt", "text", "Log output format") loglevel := flag.String("loglevel", "INFO", "Log level: DEBUG, INFO, WARN, or ERROR") flag.Parse() // setup the application app := &application{ logger: loggerBuilder(logfmt, loglevel), } app.logger.Info("starting server", slog.String("addr", *addr)) err := http.ListenAndServe(*addr, app.routes()) app.logger.Error(err.Error()) os.Exit(1) }