объект логгера, чтобы использовать его и на слое репозитория, и сервиса и внешнем слое хендлера? Или лучше инициализировать на каждом уровне отдельное логирование?
cmd/{project_name}/main.go
А как его спускать ниже? Как аргументы методов (звучит не очень)... Или я что-то путаю?
cmd/{project_name}/main.go это стандартная точка входа для сборки бинарника в проектах на go, где инициализируется все приложение и первым делом там должна быть инициализация логгера
путаешь, звучит очень даже
Я видел вот так: https://github.com/gopherschool/http-rest-api/blob/master/internal/app/apiserver/server.go не уверен насколько хорошо это, но удобно
В main
Как аргументы конструкторов сущностей, в которых ты планируешь использовать логгер
вот еще можно поглядеть https://github.com/ardanlabs/service/blob/master/app/sales-api/main.go
Эт знаю. Вот он инициализировался, и чтобы вызывать его методы в слое репозитория я должен его туда передать, так как репозиторий в другом пакете. Структура условно такая: cmd main.go repository repository.go service service.go handlers handler.go если я инициализирую объект логгера в main.go, он будет недоступен в других пакетах, если я не передам его туда как аргумент.
Принял! Спасибо. Немного не понимаю концепцию еще, путаюсь. Почему-то думал, что это нарушит правило зависимостей
А правильнее передать в конструктор репозитория логгер и дальше пользоваться им в сервисе и хендлерах, или передавать обьект логгера каждому конструктору: и репозиторию, и сервису, и хендлеру?
В каждый из конструкторов Каждая инъекция желательно должна быть интерфейсом
Попробую! Еще раз спасибо за совет
Обсуждают сегодня