Как организовать вывод stacktrace при использовании zerolog в качестве middleware для fiber?

Как я могу изменить конфигурацию мидлвара fiberzerolog, чтобы в логах вместо полной информации о вызове ("caller") отображался путь к файлу и номер строки, где была вызвана ошибка?
  • 2 января 2024 г. 16:37
Ответы на вопрос 1
Для настройки вывода stacktrace с использованием zerolog в качестве middleware для Fiber вам нужно установить опцию Logger.With().Stack(). 

Вот пример кода, который иллюстрирует это:

```go
package main

import (
	"github.com/gofiber/fiber/v2"
	"github.com/rs/zerolog"
	"github.com/rs/zerolog/log"
	fiberzerolog "github.com/rs/zerolog/log/zerolog"
)

func main() {
	app := fiber.New()
	zerolog.TimeFieldFormat = ""
	log.Logger = log.Output(fiberzerolog.New(log.With().Stack().Logger()))
    
    app.Use(func(c *fiber.Ctx) error {
        // Ваш обработчик middleware
        
        // Регистрация ошибки
        log.Error().Err(err).Msg("Произошла ошибка")

        return nil
    })

	app.Get("/", func(c *fiber.Ctx) error {
		return c.SendString("Hello, world!")
	})

	app.Listen(":3000")
}
```

В результате ваши логи будут содержать только информацию о пути к файлу и номере строки, где произошла ошибка, вместо полной информации о вызове ("caller"). 

Обратите внимание, что эта настройка должна быть произведена до создания роутера или использования других функций или мидлваров в вашем приложении Fiber.
Похожие вопросы