Add slog gin logger

This commit is contained in:
2025-08-13 17:40:46 +03:00
parent 9dd5f47010
commit ad886ea985
3 changed files with 37 additions and 49 deletions

34
main.go
View File

@@ -26,6 +26,7 @@ import (
_ "github.com/mattn/go-sqlite3"
"github.com/pressly/goose/v3"
"github.com/prometheus/client_golang/prometheus/promhttp"
sloggin "github.com/samber/slog-gin"
)
func main() {
@@ -123,7 +124,7 @@ func main() {
// Создаем Gin middleware для логирования
gin.SetMode(gin.DebugMode)
router := gin.New()
router.Use(ginSlogMiddleware(logger))
router.Use(sloggin.New(logger))
router.Use(gin.Recovery())
// Запускаем HTTP сервер для API (создание задач и проверка статуса)
@@ -223,34 +224,3 @@ func RunMigrations(db *sql.DB, migrationsDir string, logger *slog.Logger) error
logger.Info("Migrations completed successfully")
return nil
}
// ginSlogMiddleware создает middleware для Gin, который использует slog для логирования
func ginSlogMiddleware(logger *slog.Logger) gin.HandlerFunc {
return func(c *gin.Context) {
start := time.Now()
path := c.Request.URL.Path
raw := c.Request.URL.RawQuery
// Обрабатываем запрос
c.Next()
// Логируем после обработки
latency := time.Since(start)
clientIP := c.ClientIP()
method := c.Request.Method
statusCode := c.Writer.Status()
if raw != "" {
path = path + "?" + raw
}
logger.Info("HTTP request",
"method", method,
"path", path,
"status", statusCode,
"latency", latency,
"client_ip", clientIP,
"user_agent", c.Request.UserAgent(),
)
}
}