package main import ( "flag" "log" "net/http" "os" "text/template" ) type application struct { errorLog *log.Logger infoLog *log.Logger templateCache map[string]*template.Template } func main() { addr := flag.String("addr", ":8000", "HTTP network address") flag.Parse() infoLog := log.New(os.Stdout, "INFO\t", log.Ldate|log.Ltime) errorLog := log.New(os.Stderr, "ERROR\t", log.Ldate|log.Ltime|log.Lshortfile) templateCache, err := newTemplateCache() if err != nil { errorLog.Fatal(err) } app := &application { errorLog: errorLog, infoLog: infoLog, templateCache: templateCache, } srv := &http.Server { Addr: *addr, ErrorLog: errorLog, Handler: app.routes(), } infoLog.Printf("Starting server on %s", *addr) err = srv.ListenAndServe() errorLog.Fatal(err) }