|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
Вопрос касается применения последних возможностей Java Есть класс ProgrammLog с методами логгирования. Необходимо иметь возможность использовать лог во всех классах приложения + выводить лог иерархически учитывая вложенность вызовов. Т.е. в main создается ProgrammLog Log= new ProgrammLog(); Ну а далее. Вариант 1) Передавать переменную Log во все методы тупиковый вариант. Вариант 2) Сделать все классы наследуемыми от класса Log и передавать переменную Log только в конструктор . В принципе решает проблему . А внутри класса можно инициализировать свой лог подчиненный переданному Log. Минусы - в java нет множественного наследования и все это усложняет разработку классов. Вариант 3) Композиция - в конструктор каждого класса передавать new ProgrammLog(Log) и в каждом классе просто хранить переменую CurrentLog Какие еще возможны варианты? В идеале хотелось не передавать переменные типа Log а просто считать глубину вызовов Сергей С ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 21:22 |
|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
это делать не нужно. В начале мой проект @BlackBox (аннотация добавляющая логирование в Груви) поддерживала форматирование по вложенности вызовов. Получив реальный опыт работы с такими логами - понял что оно не нужно. Читается хуже намного чем без отступов. А больше не даёт никаких преимуществ. Это только на крошечных примерах красиво выглядит с отступами. На больших простынях - нет. И описанные подходы все неправильные. В Java либо через аспект делается либо через CGLib. Я Груви использую в основном из-за своего чудо логирования автоматического (AST аннотация). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 21:44 |
|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
dakeiras это делать не нужно. Я Груви использую в основном из-за своего чудо логирования автоматического (AST аннотация). Почитаю. Но хранить я собирался логи в СУБД оттуда с любым красивым форматированием удобно вытащить - делал так в других системах ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 21:51 |
|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
selis76 dakeiras это делать не нужно. Я Груви использую в основном из-за своего чудо логирования автоматического (AST аннотация). Почитаю. Но хранить я собирался логи в СУБД оттуда с любым красивым форматированием удобно вытащить - делал так в других системах я тоже делал в PL/SQL. В Яве логов намного больше лезет, помрёт база. Советую не париться с отступами. А вместо базы использовать datadog, или splunk. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 21:55 |
|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
вот эта аннотация для автоматического логирования: https://i-t.io/BlackBox ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2020, 21:57 |
|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
selis76 Вопрос касается применения последних возможностей Java Есть класс ProgrammLog с методами логгирования. Необходимо иметь возможность использовать лог во всех классах приложения + выводить лог иерархически учитывая вложенность вызовов. Т.е. в main создается ProgrammLog Log= new ProgrammLog(); Ну а далее. ПРочитайте про SLF4J, Logback и перестаньте придумывать лишние сущности. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 11:51 |
|
Элегантный способ получать лог с иерархией.
|
|||
---|---|---|---|
#18+
Делать вложенность не стоит т.к. в хороших продуктовых системах эта вложенность может быть ... слишком глубокой чтоб ваш лог вообще печатался на экране. Дойдет до того что 99% вашего лога будет состоять из пробелов и отступов что негативно отразится на вводе-выводе для логов. Такой "пенопласт" слишком дорог в хранении. Кроме того, рекурсия сделает вашу задачу еще более неопределенной. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2020, 00:27 |
|
|
start [/forum/topic.php?fid=59&msg=40008386&tid=2120659]: |
0ms |
get settings: |
3ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
42ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
169ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 531ms |
0 / 0 |