170 похожих чатов

Ребят, а подскажите, по чистой архитектуре, где я должен инициализировать

объект логгера, чтобы использовать его и на слое репозитория, и сервиса и внешнем слое хендлера? Или лучше инициализировать на каждом уровне отдельное логирование?

15 ответов

8 просмотров

cmd/{project_name}/main.go

Denis-Nesterenko Автор вопроса
Andrei 🦉 Sergeev
cmd/{project_name}/main.go

А как его спускать ниже? Как аргументы методов (звучит не очень)... Или я что-то путаю?

Denis Nesterenko
А как его спускать ниже? Как аргументы методов (зв...

cmd/{project_name}/main.go это стандартная точка входа для сборки бинарника в проектах на go, где инициализируется все приложение и первым делом там должна быть инициализация логгера

Denis Nesterenko
А как его спускать ниже? Как аргументы методов (зв...

Я видел вот так: https://github.com/gopherschool/http-rest-api/blob/master/internal/app/apiserver/server.go не уверен насколько хорошо это, но удобно

В main

Denis Nesterenko
А как его спускать ниже? Как аргументы методов (зв...

Как аргументы конструкторов сущностей, в которых ты планируешь использовать логгер

Denis Nesterenko
А как его спускать ниже? Как аргументы методов (зв...

вот еще можно поглядеть https://github.com/ardanlabs/service/blob/master/app/sales-api/main.go

Denis-Nesterenko Автор вопроса
Andrei 🦉 Sergeev
cmd/{project_name}/main.go это стандартная точка в...

Эт знаю. Вот он инициализировался, и чтобы вызывать его методы в слое репозитория я должен его туда передать, так как репозиторий в другом пакете. Структура условно такая: cmd main.go repository repository.go service service.go handlers handler.go если я инициализирую объект логгера в main.go, он будет недоступен в других пакетах, если я не передам его туда как аргумент.

Denis-Nesterenko Автор вопроса
Vladislav Semyachkin
Да

Принял! Спасибо. Немного не понимаю концепцию еще, путаюсь. Почему-то думал, что это нарушит правило зависимостей

Denis-Nesterenko Автор вопроса
Vladislav Semyachkin
Да

А правильнее передать в конструктор репозитория логгер и дальше пользоваться им в сервисе и хендлерах, или передавать обьект логгера каждому конструктору: и репозиторию, и сервису, и хендлеру?

Denis Nesterenko
А правильнее передать в конструктор репозитория ло...

В каждый из конструкторов Каждая инъекция желательно должна быть интерфейсом

Denis-Nesterenko Автор вопроса

Похожие вопросы

Обсуждают сегодня

кому не сложно распишите пожалуйста для какой цели тут вот эти скобки и в них пихается указатель?
Михаил Helper
15
Комрады, посоветуйте, куда копать? Стал прикручивать кастомизацию тем. В OnShow главной главной формы пытаюсь загрузить из файла настроек и применить тему (на скрине, как долж...
Ed Doc
13
Такс, блин, таки кто-то знает, каким образом работают макросы stdin/stdout/stderr? Я влез в stdio.h, там определения нет, отладил через асмокод - вызывается функция со странны...
The Bird of Hermes
18
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
OnShow один раз вызывается? или возможен Hide?
Iluha Companets
14
Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Всем привет, на линуксе лучше на fasm или nasm учиться писать для начала ?
meszjol
14
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
Карта сайта