Mercurial > gemma
comparison cmd/gemma/main.go @ 5490:5f47eeea988d logging
Use own logging package.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 20 Sep 2021 17:45:39 +0200 |
parents | fdbc28a71691 |
children | 0cd4ff1066fe |
comparison
equal
deleted
inserted
replaced
5488:a726a92ea5c9 | 5490:5f47eeea988d |
---|---|
16 package main | 16 package main |
17 | 17 |
18 import ( | 18 import ( |
19 "context" | 19 "context" |
20 "fmt" | 20 "fmt" |
21 "log" | 21 lg "log" |
22 "net/http" | 22 "net/http" |
23 "os" | 23 "os" |
24 "os/signal" | 24 "os/signal" |
25 "path/filepath" | 25 "path/filepath" |
26 "syscall" | 26 "syscall" |
32 "gemma.intevation.de/gemma/pkg/auth" | 32 "gemma.intevation.de/gemma/pkg/auth" |
33 "gemma.intevation.de/gemma/pkg/config" | 33 "gemma.intevation.de/gemma/pkg/config" |
34 "gemma.intevation.de/gemma/pkg/controllers" | 34 "gemma.intevation.de/gemma/pkg/controllers" |
35 "gemma.intevation.de/gemma/pkg/geoserver" | 35 "gemma.intevation.de/gemma/pkg/geoserver" |
36 "gemma.intevation.de/gemma/pkg/imports" | 36 "gemma.intevation.de/gemma/pkg/imports" |
37 "gemma.intevation.de/gemma/pkg/log" | |
37 "gemma.intevation.de/gemma/pkg/middleware" | 38 "gemma.intevation.de/gemma/pkg/middleware" |
38 "gemma.intevation.de/gemma/pkg/scheduler" | 39 "gemma.intevation.de/gemma/pkg/scheduler" |
39 ) | 40 ) |
40 | 41 |
41 func prepareSessionStore() { | 42 func prepareSessionStore() { |
49 | 50 |
50 func start(cmd *cobra.Command, args []string) { | 51 func start(cmd *cobra.Command, args []string) { |
51 | 52 |
52 config.Ready() | 53 config.Ready() |
53 | 54 |
55 if lf := config.LogFile(); lf != "" { | |
56 log.SetupLog(lf, 0666) | |
57 defer log.ShutdownLog() | |
58 } | |
59 | |
60 log.SetLogLevel(config.LogLevel()) | |
61 | |
54 web, err := filepath.Abs(config.Web()) | 62 web, err := filepath.Abs(config.Web()) |
55 if err != nil { | 63 if err != nil { |
56 log.Fatalf("error: %v\n", err) | 64 log.Fatalf("%v\n", err) |
57 } | 65 } |
58 | 66 |
59 prepareSessionStore() | 67 prepareSessionStore() |
60 | 68 |
61 // Do GeoServer setup in background. | 69 // Do GeoServer setup in background. |
71 dir := middleware.NoSniff(http.FileServer(http.Dir(web))) | 79 dir := middleware.NoSniff(http.FileServer(http.Dir(web))) |
72 | 80 |
73 m.PathPrefix("/").Handler(dir) | 81 m.PathPrefix("/").Handler(dir) |
74 | 82 |
75 addr := fmt.Sprintf("%s:%d", config.WebHost(), config.WebPort()) | 83 addr := fmt.Sprintf("%s:%d", config.WebHost(), config.WebPort()) |
76 log.Printf("info: listen on %s\n", addr) | 84 log.Infof("listen on %s\n", addr) |
77 | 85 |
78 var h http.Handler | 86 var h http.Handler |
79 | 87 |
80 if al := config.AllowedOrigins(); len(al) > 0 { | 88 if al := config.AllowedOrigins(); len(al) > 0 { |
81 c := cors.New(cors.Options{ | 89 c := cors.New(cors.Options{ |
100 signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) | 108 signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM) |
101 | 109 |
102 select { | 110 select { |
103 case err := <-done: | 111 case err := <-done: |
104 if err != nil && err != http.ErrServerClosed { | 112 if err != nil && err != http.ErrServerClosed { |
105 log.Fatalf("error: %v\n", err) | 113 log.Fatalf("%v\n", err) |
106 } | 114 } |
107 case <-sigChan: | 115 case <-sigChan: |
108 } | 116 } |
109 | 117 |
110 server.Shutdown(context.Background()) | 118 server.Shutdown(context.Background()) |
111 | 119 |
112 <-done | 120 <-done |
113 | 121 |
114 if err := auth.Sessions.Shutdown(); err != nil { | 122 if err := auth.Sessions.Shutdown(); err != nil { |
115 log.Fatalf("error: %v\n", err) | 123 log.Fatalf("%v\n", err) |
116 } | 124 } |
117 } | 125 } |
118 | 126 |
119 func main() { | 127 func main() { |
120 config.RootCmd.Run = start | 128 config.RootCmd.Run = start |
121 log.SetFlags(log.LstdFlags | log.Lshortfile) | |
122 if err := config.RootCmd.Execute(); err != nil { | 129 if err := config.RootCmd.Execute(); err != nil { |
123 log.Fatalln(err) | 130 lg.Fatalln(err) |
124 } | 131 } |
125 } | 132 } |