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 }