Replace all log.Println and fmt.Printf with Zap structured logging

This commit is contained in:
2026-05-21 23:24:55 +02:00
parent f0653489d6
commit 89c31c2856
7 changed files with 184 additions and 162 deletions
+31 -33
View File
@@ -5,11 +5,11 @@ import (
"database/sql"
"embed"
"fmt"
"log"
"os"
"strconv"
"time"
"music-server/internal/logging"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/postgres"
_ "github.com/golang-migrate/migrate/v4/database/postgres"
@@ -17,6 +17,7 @@ import (
"github.com/golang-migrate/migrate/v4/source/iofs"
"github.com/jackc/pgx/v5/pgxpool"
_ "github.com/lib/pq"
"go.uber.org/zap"
)
var Dbpool *pgxpool.Pool
@@ -31,49 +32,46 @@ func InitDB(host string, port string, user string, password string, dbname strin
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
fmt.Println(psqlInfo)
logging.GetLogger().Debug("Database connection info", zap.String("host", host), zap.String("port", port), zap.String("dbname", dbname))
var err error
Dbpool, err = pgxpool.New(Ctx, psqlInfo)
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
logging.GetLogger().Fatal("Unable to connect to database", zap.String("error", err.Error()))
}
var success string
err = Dbpool.QueryRow(Ctx, "select 'Successfully connected!'").Scan(&success)
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", err)
os.Exit(1)
logging.GetLogger().Fatal("Database query failed", zap.String("error", err.Error()))
}
fmt.Println(success)
logging.GetLogger().Info("Database connected", zap.String("status", success))
}
func CloseDb() {
fmt.Println("Closing connection to database")
logging.GetLogger().Info("Closing database connection")
Dbpool.Close()
}
func Testf() {
rows, dbErr := Dbpool.Query(Ctx, "select game_name from game")
if dbErr != nil {
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", dbErr)
os.Exit(1)
logging.GetLogger().Fatal("Query failed", zap.String("error", dbErr.Error()))
}
for rows.Next() {
var gameName string
dbErr = rows.Scan(&gameName)
if dbErr != nil {
_, _ = fmt.Fprintf(os.Stderr, "QueryRow failed: %v\n", dbErr)
logging.GetLogger().Error("Row scan failed", zap.String("error", dbErr.Error()))
}
_, _ = fmt.Fprintf(os.Stderr, "%v\n", gameName)
logging.GetLogger().Debug("Game found", zap.String("name", gameName))
}
}
func ResetGameIdSeq() {
_, err := Dbpool.Query(Ctx, "SELECT setval('game_id_seq', (SELECT MAX(id) FROM game)+1);")
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Exec failed: %v\n", err)
logging.GetLogger().Error("Failed to reset game ID sequence", zap.String("error", err.Error()))
}
}
@@ -83,85 +81,85 @@ func createDb(host string, port string, user string, password string, dbname str
defer db.Close()
if err != nil {
log.Fatal(err)
logging.GetLogger().Fatal("Failed to connect for database creation", zap.String("error", err.Error()))
}
_, err = db.Exec("create database " + dbname)
if err != nil {
//handle the error
log.Fatal(err)
logging.GetLogger().Fatal("Failed to create database", zap.String("error", err.Error()))
}
log.Println("Finished creating database")
logging.GetLogger().Info("Database created", zap.String("dbname", dbname))
}
func Migrate_db(host string, port string, user string, password string, dbname string) {
migrationInfo := fmt.Sprintf("postgres://%s:%s@%s:%s/%s?sslmode=disable",
user, password, host, port, dbname)
fmt.Println("Migration Info: ", migrationInfo)
logging.GetLogger().Debug("Migration info", zap.String("url", migrationInfo))
db, err := sql.Open("postgres", migrationInfo)
if err != nil {
log.Println(err)
logging.GetLogger().Error("Failed to open database for migration", zap.String("error", err.Error()))
}
_, err = db.Query("select * from game")
if err != nil {
log.Println(err)
logging.GetLogger().Warn("Game table not found, creating database", zap.String("error", err.Error()))
createDb(host, port, user, password, dbname)
db, err = sql.Open("postgres", migrationInfo)
if err != nil {
log.Fatal(err)
logging.GetLogger().Fatal("Failed to reconnect after database creation", zap.String("error", err.Error()))
}
}
driver, err := postgres.WithInstance(db, &postgres.Config{})
if err != nil {
log.Println(err)
logging.GetLogger().Error("Failed to create migration driver", zap.String("error", err.Error()))
}
files, err := iofs.New(MigrationsFs, "migrations")
if err != nil {
log.Fatal(err)
logging.GetLogger().Fatal("Failed to create migration files", zap.String("error", err.Error()))
}
m, err := migrate.NewWithInstance("iofs", files, "postgres", driver)
if err != nil {
log.Fatal(err)
logging.GetLogger().Fatal("Failed to create migrator", zap.String("error", err.Error()))
}
/*m, err := migrate.NewWithDatabaseInstance(
"file://./db/migrations/",
"postgres", driver)
if err != nil {
log.Println(err)
logging.GetLogger().Error("Migration setup error", zap.String("error", err.Error()))
}*/
version, _, err := m.Version()
if err != nil {
log.Println("Migration version err: ", err)
logging.GetLogger().Error("Failed to get migration version", zap.String("error", err.Error()))
}
fmt.Println("Migration version before: ", version)
logging.GetLogger().Info("Migration version before", zap.Uint("version", version))
//err = m.Force(1)
//err = m.Up() // or m.Steps(2) if you want to explicitly set the number of migrations to run
//if err != nil {
// log.Println("Force err: ", err)
// logging.GetLogger().Error("Force migration error", zap.String("error", err.Error()))
//}
err = m.Migrate(2)
//err = m.Up() // or m.Steps(2) if you want to explicitly set the number of migrations to run
if err != nil {
log.Println("Migration err: ", err)
logging.GetLogger().Error("Migration error", zap.String("error", err.Error()))
}
versionAfter, _, err := m.Version()
if err != nil {
log.Println("Migration version err: ", err)
logging.GetLogger().Error("Failed to get migration version after", zap.String("error", err.Error()))
}
fmt.Println("Migration version after: ", versionAfter)
logging.GetLogger().Info("Migration version after", zap.Uint("version", versionAfter))
fmt.Println("Migration done")
logging.GetLogger().Info("Migration completed")
db.Close()
}
@@ -180,7 +178,7 @@ func Health() map[string]string {
if err != nil {
stats["status"] = "down"
stats["error"] = fmt.Sprintf("db down: %v", err)
log.Fatalf("db down: %v", err) // Log the error and terminate the program
logging.GetLogger().Fatal("Database health check failed", zap.String("error", err.Error()))
return stats
}