diff options
| author | Felix Hanley <felix@userspace.com.au> | 2020-03-05 11:45:33 +0000 |
|---|---|---|
| committer | Felix Hanley <felix@userspace.com.au> | 2020-03-05 11:45:33 +0000 |
| commit | 6f21095f6d71e0d5e2b75e754f9b28e15a552d36 (patch) | |
| tree | faaa098accc70ac2f6035fb17821a90c42093c51 /cmd/server/main.go | |
| parent | a1d9e95decc1fc51c5aaf56b7675f233eadaac7d (diff) | |
| download | sws-6f21095f6d71e0d5e2b75e754f9b28e15a552d36.tar.gz sws-6f21095f6d71e0d5e2b75e754f9b28e15a552d36.tar.bz2 | |
Add some basic time ranges
Diffstat (limited to 'cmd/server/main.go')
| -rw-r--r-- | cmd/server/main.go | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/cmd/server/main.go b/cmd/server/main.go index 4e98b3b..900ef25 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "io" "net/http" "os" "strings" @@ -26,6 +27,7 @@ var ( addr *string dsn *string domain *string + logFile *string noMigrate *bool ) @@ -34,6 +36,7 @@ func init() { addr = stringFlag("listen", "l", "localhost:5000", "LISTEN", "listen address") dsn = stringFlag("dsn", "", "file:sws.db?cache=shared", "DSN", "database password") domain = stringFlag("domain", "", "stats.userspace.com.au", "DOMAIN", "stats domain") + logFile = stringFlag("log", "", "", "LOGFILE", "log to file") noMigrate = boolFlag("no-migrate", "m", false, "NOMIGRATE", "disable migrations") // Default to no log @@ -47,18 +50,27 @@ type Renderer interface { } func main() { + var err error flag.Parse() + var output io.Writer = os.Stdout + if logFile != nil && *logFile != "" { + if output, err = os.Create(*logFile); err != nil { + fmt.Fprintf(os.Stderr, "failed to open log file: %s", err) + os.Exit(1) + } + } + if *verbose { log = func(v ...interface{}) { - fmt.Fprintf(os.Stdout, "[%s] ", time.Now().Format(time.RFC3339)) - fmt.Fprintln(os.Stdout, v...) + fmt.Fprintf(output, "[%s] ", time.Now().Format(time.RFC3339)) + fmt.Fprintln(output, v...) } } if d := os.Getenv("DEBUG"); d != "" { debug = func(v ...interface{}) { - fmt.Fprintf(os.Stdout, "[%s] ", time.Now().Format(time.RFC3339)) - fmt.Fprintln(os.Stdout, v...) + fmt.Fprintf(output, "[%s] ", time.Now().Format(time.RFC3339)) + fmt.Fprintln(output, v...) } } log("version", Version) @@ -71,7 +83,7 @@ func main() { if noMigrate == nil || !*noMigrate { v, err := migrateDatabase(driver, *dsn) if err != nil { - fmt.Fprintf(os.Stderr, "failed to migrate: %s", err) + log("failed to migrate:", err) os.Exit(2) } log("database at version", v) @@ -79,12 +91,12 @@ func main() { db, err := sqlx.Open(driver, *dsn) if err != nil { - log(err) + log("failed to open database:", err) os.Exit(1) } defer db.Close() if err := db.Ping(); err != nil { - log(err) + log("failed to connect to database:", err) os.Exit(1) } var st sws.Store @@ -96,7 +108,7 @@ func main() { r, err := createRouter(st) if err != nil { - log(err) + log("failed to create router:", err) os.Exit(1) } |
