mirror of
https://github.com/pikami/cosmium.git
synced 2025-12-19 08:50:46 +00:00
Added setting for LogLevel
This commit is contained in:
@@ -26,7 +26,8 @@ func ParseFlags() ServerConfig {
|
||||
disableAuthentication := flag.Bool("DisableAuth", false, "Disable authentication")
|
||||
disableTls := flag.Bool("DisableTls", false, "Disable TLS, serve over HTTP")
|
||||
persistDataPath := flag.String("Persist", "", "Saves data to given path on application exit")
|
||||
debug := flag.Bool("Debug", false, "Runs application in debug mode, this provides additional logging")
|
||||
logLevel := NewEnumValue("info", []string{"debug", "info", "error", "silent"})
|
||||
flag.Var(logLevel, "LogLevel", fmt.Sprintf("Sets the logging level %s", logLevel.AllowedValuesList()))
|
||||
|
||||
flag.Parse()
|
||||
setFlagsFromEnvironment()
|
||||
@@ -41,8 +42,8 @@ func ParseFlags() ServerConfig {
|
||||
config.PersistDataFilePath = *persistDataPath
|
||||
config.DisableAuth = *disableAuthentication
|
||||
config.DisableTls = *disableTls
|
||||
config.Debug = *debug
|
||||
config.AccountKey = *accountKey
|
||||
config.LogLevel = logLevel.value
|
||||
|
||||
config.PopulateCalculatedFields()
|
||||
|
||||
@@ -54,7 +55,19 @@ func (c *ServerConfig) PopulateCalculatedFields() {
|
||||
c.DatabaseDomain = c.Host
|
||||
c.DatabaseEndpoint = fmt.Sprintf("https://%s:%d/", c.Host, c.Port)
|
||||
c.ExplorerBaseUrlLocation = ExplorerBaseUrlLocation
|
||||
logger.EnableDebugOutput = c.Debug
|
||||
|
||||
switch c.LogLevel {
|
||||
case "debug":
|
||||
logger.LogLevel = logger.LogLevelDebug
|
||||
case "info":
|
||||
logger.LogLevel = logger.LogLevelInfo
|
||||
case "error":
|
||||
logger.LogLevel = logger.LogLevelError
|
||||
case "silent":
|
||||
logger.LogLevel = logger.LogLevelSilent
|
||||
default:
|
||||
logger.LogLevel = logger.LogLevelInfo
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ServerConfig) ApplyDefaultsToEmptyFields() {
|
||||
|
||||
36
api/config/enumFlag.go
Normal file
36
api/config/enumFlag.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type EnumValue struct {
|
||||
allowedValues []string
|
||||
value string
|
||||
}
|
||||
|
||||
func (e *EnumValue) String() string {
|
||||
return e.value
|
||||
}
|
||||
|
||||
func (e *EnumValue) Set(v string) error {
|
||||
for _, allowed := range e.allowedValues {
|
||||
if v == allowed {
|
||||
e.value = v
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("invalid value %q, must be one of: %s", v, strings.Join(e.allowedValues, ", "))
|
||||
}
|
||||
|
||||
func NewEnumValue(defaultValue string, allowedValues []string) *EnumValue {
|
||||
return &EnumValue{
|
||||
allowedValues: allowedValues,
|
||||
value: defaultValue,
|
||||
}
|
||||
}
|
||||
|
||||
func (e *EnumValue) AllowedValuesList() string {
|
||||
return fmt.Sprintf("(one of: %s)", strings.Join(e.allowedValues, ", "))
|
||||
}
|
||||
@@ -15,6 +15,6 @@ type ServerConfig struct {
|
||||
PersistDataFilePath string `json:"persistDataFilePath"`
|
||||
DisableAuth bool `json:"disableAuth"`
|
||||
DisableTls bool `json:"disableTls"`
|
||||
Debug bool `json:"debug"`
|
||||
LogLevel string `json:"logLevel"`
|
||||
ExplorerBaseUrlLocation string `json:"explorerBaseUrlLocation"`
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ func (h *Handlers) PatchDocument(c *gin.Context) {
|
||||
|
||||
currentDocumentBytes, err := json.Marshal(document)
|
||||
if err != nil {
|
||||
logger.Error("Failed to marshal existing document:", err)
|
||||
logger.ErrorLn("Failed to marshal existing document:", err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to marshal existing document"})
|
||||
return
|
||||
}
|
||||
@@ -149,7 +149,7 @@ func (h *Handlers) PatchDocument(c *gin.Context) {
|
||||
var modifiedDocument map[string]interface{}
|
||||
err = json.Unmarshal(modifiedDocumentBytes, &modifiedDocument)
|
||||
if err != nil {
|
||||
logger.Error("Failed to unmarshal modified document:", err)
|
||||
logger.ErrorLn("Failed to unmarshal modified document:", err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"message": "Failed to unmarshal modified document"})
|
||||
return
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ func RequestLogger() gin.HandlerFunc {
|
||||
|
||||
bodyStr := readBody(rdr1)
|
||||
if bodyStr != "" {
|
||||
logger.Debug(bodyStr)
|
||||
logger.DebugLn(bodyStr)
|
||||
}
|
||||
|
||||
c.Request.Body = rdr2
|
||||
|
||||
@@ -16,7 +16,10 @@ import (
|
||||
func (s *ApiServer) CreateRouter(repository *repositories.DataRepository) {
|
||||
routeHandlers := handlers.NewHandlers(repository, s.config)
|
||||
|
||||
if !s.config.Debug {
|
||||
gin.DefaultWriter = logger.InfoWriter()
|
||||
gin.DefaultErrorWriter = logger.ErrorWriter()
|
||||
|
||||
if s.config.LogLevel != "debug" {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
|
||||
@@ -24,7 +27,7 @@ func (s *ApiServer) CreateRouter(repository *repositories.DataRepository) {
|
||||
e.RedirectTrailingSlash = false
|
||||
})
|
||||
|
||||
if s.config.Debug {
|
||||
if s.config.LogLevel == "debug" {
|
||||
router.Use(middleware.RequestLogger())
|
||||
}
|
||||
|
||||
@@ -89,10 +92,10 @@ func (s *ApiServer) Start() {
|
||||
|
||||
go func() {
|
||||
<-s.stopServer
|
||||
logger.Info("Shutting down server...")
|
||||
logger.InfoLn("Shutting down server...")
|
||||
err := server.Shutdown(context.TODO())
|
||||
if err != nil {
|
||||
logger.Error("Failed to shutdown server:", err)
|
||||
logger.ErrorLn("Failed to shutdown server:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
@@ -101,7 +104,7 @@ func (s *ApiServer) Start() {
|
||||
logger.Infof("Listening and serving HTTP on %s\n", server.Addr)
|
||||
err := server.ListenAndServe()
|
||||
if err != nil {
|
||||
logger.Error("Failed to start HTTP server:", err)
|
||||
logger.ErrorLn("Failed to start HTTP server:", err)
|
||||
}
|
||||
s.isActive = false
|
||||
} else if s.config.TLS_CertificatePath != "" && s.config.TLS_CertificateKey != "" {
|
||||
@@ -110,7 +113,7 @@ func (s *ApiServer) Start() {
|
||||
s.config.TLS_CertificatePath,
|
||||
s.config.TLS_CertificateKey)
|
||||
if err != nil {
|
||||
logger.Error("Failed to start HTTPS server:", err)
|
||||
logger.ErrorLn("Failed to start HTTPS server:", err)
|
||||
}
|
||||
s.isActive = false
|
||||
} else {
|
||||
@@ -120,7 +123,7 @@ func (s *ApiServer) Start() {
|
||||
logger.Infof("Listening and serving HTTPS on %s\n", server.Addr)
|
||||
err := server.ListenAndServeTLS("", "")
|
||||
if err != nil {
|
||||
logger.Error("Failed to start HTTPS server:", err)
|
||||
logger.ErrorLn("Failed to start HTTPS server:", err)
|
||||
}
|
||||
s.isActive = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user