Change logging to be json comaptible
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"ResendIt/internal/config"
|
||||
"ResendIt/internal/db"
|
||||
"ResendIt/internal/file"
|
||||
"ResendIt/internal/logger"
|
||||
"ResendIt/internal/user"
|
||||
"ResendIt/internal/util"
|
||||
"ResendIt/internal/web"
|
||||
@@ -28,29 +29,37 @@ func main() {
|
||||
fmt.Printf("Error loading .env file\n")
|
||||
}
|
||||
|
||||
os.Setenv("LOG_FORMAT", "json")
|
||||
|
||||
logger.Log.Info().Str("type", "startup").Msg("Starting ReSendIt")
|
||||
|
||||
dbCon, err := db.Connect()
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to connect database: %w", err))
|
||||
logger.Log.Fatal().Err(err).Str("type", "startup").Msg("Failed to connect to database")
|
||||
}
|
||||
|
||||
err = dbCon.AutoMigrate(&user.User{}, &file.FileRecord{}, &config.ConfigEntry{})
|
||||
if err != nil {
|
||||
fmt.Printf("Error migrating database: %v\n", err)
|
||||
logger.Log.Error().Err(err).Str("type", "startup").Msg("Database migration failed")
|
||||
return
|
||||
}
|
||||
|
||||
// create temp folder
|
||||
path := "./tmp"
|
||||
if os.IsExist(os.Mkdir(path, os.ModePerm)) {
|
||||
fmt.Printf("Temp folder already exists, skipping creation\n")
|
||||
logger.Log.Info().Str("type", "startup").Msg("Temp folder already exists")
|
||||
} else {
|
||||
if err := os.MkdirAll(path, os.ModePerm); err != nil {
|
||||
fmt.Printf("Error creating temp folder: %v\n", err)
|
||||
logger.Log.Error().Err(err).Str("type", "startup").Msg("Failed to create temp folder")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
r := gin.Default()
|
||||
// Use gin.New() instead of gin.Default() to have custom middleware
|
||||
r := gin.New()
|
||||
// Add structured logging and recovery middleware
|
||||
r.Use(middleware.StructuredLogger())
|
||||
r.Use(gin.Recovery())
|
||||
|
||||
r.MaxMultipartMemory = 10 << 30
|
||||
r.SetFuncMap(template.FuncMap{
|
||||
@@ -60,9 +69,11 @@ func main() {
|
||||
})
|
||||
|
||||
r.LoadHTMLGlob("templates/*.html")
|
||||
//r.LoadHTMLGlob("internal/templates/new/*.html")
|
||||
r.Static("/static", "./static")
|
||||
|
||||
// Add request ID middleware
|
||||
r.Use(middleware.RequestIDMiddleware())
|
||||
|
||||
r.GET("/ping", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{
|
||||
"message": "hello",
|
||||
@@ -85,7 +96,7 @@ func main() {
|
||||
configService := config.NewService(configRepo)
|
||||
|
||||
if err := configService.EnsureDefaults(); err != nil {
|
||||
panic(fmt.Errorf("failed to ensure config defaults: %w", err))
|
||||
logger.Log.Fatal().Err(err).Str("type", "startup").Msg("Failed to ensure config defaults")
|
||||
}
|
||||
|
||||
fileRepo := file.NewRepository(dbCon)
|
||||
@@ -125,8 +136,15 @@ func main() {
|
||||
os.Setenv("DOMAIN", domain)
|
||||
}
|
||||
|
||||
logger.Log.Info().
|
||||
Str("type", "startup").
|
||||
Str("port", port).
|
||||
Str("domain", domain).
|
||||
Msg("Server starting")
|
||||
|
||||
err = r.Run(":" + port)
|
||||
if err != nil {
|
||||
logger.Log.Error().Err(err).Str("type", "startup").Msg("Server failed to start")
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -143,15 +161,15 @@ func createAdminUser(service *user.Service) {
|
||||
_, err := service.FindByUsername("admin")
|
||||
|
||||
if err == nil {
|
||||
fmt.Println("Admin user already exists, skipping creation")
|
||||
logger.Log.Info().Str("type", "startup").Msg("Admin user already exists")
|
||||
return
|
||||
} else if errors.Is(err, user.ErrUserNotFound) {
|
||||
fmt.Println("Admin user not found, creating new admin user")
|
||||
logger.Log.Info().Str("type", "startup").Msg("Creating admin user")
|
||||
|
||||
password := generateRandomPassword(16)
|
||||
adminUser, err := service.CreateUser("admin", password, "admin")
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating admin user: %v\n", err)
|
||||
logger.Log.Error().Err(err).Str("type", "startup").Msg("Failed to create admin user")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -159,13 +177,16 @@ func createAdminUser(service *user.Service) {
|
||||
_, err = service.UpdateUser(adminUser)
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Error creating admin user: %v\n", err)
|
||||
logger.Log.Error().Err(err).Str("type", "startup").Msg("Failed to update admin user")
|
||||
} else {
|
||||
fmt.Printf("Admin user created with random password: %s\n", password)
|
||||
logger.Log.Info().
|
||||
Str("type", "startup").
|
||||
Str("password", password).
|
||||
Msg("Admin user created")
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Error checking for admin user: %v\n", err)
|
||||
logger.Log.Error().Err(err).Str("type", "startup").Msg("Error checking for admin user")
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user