Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Элегантный способ получать лог с иерархией. / 7 сообщений из 7, страница 1 из 1
13.10.2020, 21:22
    #40008235
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
Вопрос касается применения последних возможностей Java
Есть класс ProgrammLog с методами логгирования.
Необходимо иметь возможность использовать лог во всех классах приложения + выводить лог иерархически учитывая вложенность вызовов.
Т.е. в main создается ProgrammLog Log= new ProgrammLog();
Ну а далее.
Вариант 1) Передавать переменную Log во все методы тупиковый вариант.
Вариант 2) Сделать все классы наследуемыми от класса Log и передавать переменную Log только в конструктор . В принципе решает проблему . А внутри класса можно инициализировать свой лог подчиненный переданному Log. Минусы - в java нет множественного наследования и все это усложняет разработку классов.
Вариант 3) Композиция - в конструктор каждого класса передавать new ProgrammLog(Log) и в каждом классе просто хранить переменую CurrentLog

Какие еще возможны варианты?
В идеале хотелось не передавать переменные типа Log а просто считать глубину вызовов

Сергей С
...
Рейтинг: 0 / 0
13.10.2020, 21:44
    #40008246
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
это делать не нужно.

В начале мой проект @BlackBox (аннотация добавляющая логирование в Груви) поддерживала форматирование по вложенности вызовов.

Получив реальный опыт работы с такими логами - понял что оно не нужно. Читается хуже намного чем без отступов.
А больше не даёт никаких преимуществ.

Это только на крошечных примерах красиво выглядит с отступами. На больших простынях - нет.

И описанные подходы все неправильные. В Java либо через аспект делается либо через CGLib. Я Груви использую в основном из-за своего чудо логирования автоматического (AST аннотация).
...
Рейтинг: 0 / 0
13.10.2020, 21:51
    #40008253
selis76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
dakeiras
это делать не нужно.
Я Груви использую в основном из-за своего чудо логирования автоматического (AST аннотация).

Почитаю.
Но хранить я собирался логи в СУБД оттуда с любым красивым форматированием удобно вытащить - делал так в других системах
...
Рейтинг: 0 / 0
13.10.2020, 21:55
    #40008256
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
selis76
dakeiras
это делать не нужно.
Я Груви использую в основном из-за своего чудо логирования автоматического (AST аннотация).

Почитаю.
Но хранить я собирался логи в СУБД оттуда с любым красивым форматированием удобно вытащить - делал так в других системах


я тоже делал в PL/SQL. В Яве логов намного больше лезет, помрёт база. Советую не париться с отступами.
А вместо базы использовать datadog, или splunk.
...
Рейтинг: 0 / 0
13.10.2020, 21:57
    #40008257
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
вот эта аннотация для автоматического логирования:
https://i-t.io/BlackBox
...
Рейтинг: 0 / 0
14.10.2020, 11:51
    #40008386
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
selis76
Вопрос касается применения последних возможностей Java
Есть класс ProgrammLog с методами логгирования.
Необходимо иметь возможность использовать лог во всех классах приложения + выводить лог иерархически учитывая вложенность вызовов.
Т.е. в main создается ProgrammLog Log= new ProgrammLog();
Ну а далее.


ПРочитайте про SLF4J, Logback и перестаньте придумывать лишние сущности.
...
Рейтинг: 0 / 0
15.10.2020, 00:27
    #40008671
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Элегантный способ получать лог с иерархией.
Делать вложенность не стоит т.к. в хороших продуктовых системах эта вложенность
может быть ... слишком глубокой чтоб ваш лог вообще печатался на экране.

Дойдет до того что 99% вашего лога будет состоять из пробелов и отступов что
негативно отразится на вводе-выводе для логов. Такой "пенопласт" слишком
дорог в хранении.

Кроме того, рекурсия сделает вашу задачу еще более неопределенной.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Элегантный способ получать лог с иерархией. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]