Add slog gin logger
This commit is contained in:
34
main.go
34
main.go
@@ -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(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user