33 lines
697 B
Go
33 lines
697 B
Go
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)
|
|
}
|