powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как и что вы логируете ?
25 сообщений из 55, страница 2 из 3
Как и что вы логируете ?
    #39301491
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovAlexey TominВот что делать с warn не очень понятноНа самом деле, ещё notice не хватает На проде никто читать это не будетЕсли всякую фигню пихать - да, поэтому в предупреждениях должна быть информация к размышлению для админа.

Ну в zabbix писать warn это жёстко. А вот в sentryи потом читать статистику- да, полезно.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301507
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Добрый день .

Собственно интересует сама методология , ваш подход , как вы определяете уровни логирования , в какой момент и как пишите в лог итд ...

Насколько детально ваш код покрыт логами (на 100 строк бизнес кода) итд ...
Вечный вопрос. Я думаю нужно во первых - спросить бизнес.
А что собсно вы хотите видеть в логах? Я думаю (условно)
существуют 3 базовых категории логгирования:

Системная (ошибки IO/Network)

Бизнес (открытие-закрытия)

Безопасность (логон-логофф)

Вот так и пишите. Делать логгирование с избытком - нет особого смысла. Java по умолчанию компилирует
в режиме -g:all тоесть информация о строках сохраняется в бинарнике. В случае Exception - выпадает номер
строки исходного файла где стрельнуло.

Все прочие параноидальные способы логгирования не имеют смысла. Опытный разраб и так знает где проблема.
А логгировать OK через каждую строку тоже нет смысла по причине которую я описал выше.

Для облегчения контекста логгирования можно использовать MDC из Log4j 1.7 или ThreadContext из 2.0 вместе
с конфигурациями. +Почитайте про AOP в Spring. Можно аннотировать аргументы в вызове методов и это будет
командой к логгеру.

Но. Самое главное. Что-бы вы не делали. Кто-то должен читать эти сообщения. Если никто не читает то возникает
вопрос целесообразности.

Если не можете аргументировать - то и логгировать не стоит вообще. Это соображение не пустое а продиктованное
многолетним наблюдением за эксплуатацией более чем десятка систем и взаимодействием с секторами внедрения.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301562
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1Собственно интересует сама методология , ваш подход , как вы определяете уровни логирования , в какой момент и как пишите в лог итд ...
Насколько детально ваш код покрыт логами (на 100 строк бизнес кода) итд ...
TRACE - уровень на котором выводится полная информация о данных. Дампы запросов, объектов, XML и т.п.
DEBUG - уровень анализа - покрывает ВСЕ ветвления кода, чтобы по логу было видно весь сценарий по которому работала программа.
INFO - менее детальный аналог DEBUG - покрывает наиболее критичные изменения состояния системы.
WARN - подозрительные ситуации, которые не критичны для отработки сценария, но которые не ожидаются при штатной работе системы.
ERROR - все сбои
FATAL - критичные сбои при которых дальнейшая работа системы не возможна. В принципе особой пользы в этом уровне нет, можно и в ERROR логировать.

Вопрос филосовский, что есть ERROR, а что INFO.
Есть подсистема работы с БД, ее попросили создать объект. База вернула ошибку "INDEX DUPLICATED". С точки зрения этой подсистемы - это уровень ERROR (запрос не выполнился - это плохо), а с точки зрения бизнес логики, которая эту подсистему пользует - это может быть и INFO - а то и вообще DEBUG (попытались создать объект, убедились что он есть и пошли по другой ветке алгоритма).

Вечный спор у меня с аналитиками на эту тему.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301660
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxifly,
Если лог ИС а не подсистемы, то и выводить ERROR информационной системы. По бизнес логике.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301680
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxiflyЕсть подсистема работы с БД, ее попросили создать объект. База вернула ошибку "INDEX DUPLICATED". С точки зрения этой подсистемы - это уровень ERROR (запрос не выполнился - это плохо), а с точки зрения бизнес логики, которая эту подсистему пользует - это может быть и INFO - а то и вообще DEBUG (попытались создать объект, убедились что он есть и пошли по другой ветке алгоритма).

Вечный спор у меня с аналитиками на эту тему.

Лог не для аналитиков. Тут как раз можно ввести систему аудита.

На уровне подсистемы это exception. Кинули и забыли. В момент создания exception логи не пишутся.
На уровне бизнес-логики мы его поймали и поправили. Вывести INFO/DEBUG - вопрос вкуса.
Записать ли в аудит- это пусть аналитик скажет. Но аудит это не лог.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301685
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tomin В момент создания exception логи не пишутся.

И как Вы потом разбираетесь, почему какое-то действие не выполнено было?
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301706
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Basil A. Sidorovпропущено...
Вы неправильно подходите к протоколированию.
Есть две задачи - аудит и собственно протоколирование.
Аудит не знаю, а протоколирование это замена отладчика, т.к. рано или поздно возникнет ситуация, когда ничего, кроме лога у вас просто не будет, а "на тесте" или/и "под отладчиком" проблема не воспроизведётся.
Соответственно, протоколировать надо так, чтобы читая лог вы понимали что происходило в системе.
Как минимум, протоколироваться должны все сомнительные места и так, чтобы расхождение реального поведения с ожидаемым вызывало запись нужного вам уровня.
+1 лучше и не скажешь.

+1 Да , скорее так - идеологические логирование нужно для восстановления последовательности действий при возникновении нештатной ситуации как вариант , чтобы увидеть ход процесса исполнения бизнес кода ... понять нарушена логика или нет ?!

вроде так .... следовательно логировать нужно последовательность действий . Запись логики .
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301744
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1следовательно логировать нужно последовательность действий
в уровне Debug.
в уровне Error - сигнальная схема только сигнализирующая.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301749
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Atum1следовательно логировать нужно последовательность действий
в уровне Debug.
IMHO вся последовательность со всеми данными - это trace.
debug - те места, которым понадобилась отладка.
info - основные вехи
warn - допустимое, но нетипичное поведение (данные) или не очень комильфо.
error - что-то типа, а диска то на который надо писать лог нет. :)
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301753
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей АрсеньевIMHO вся последовательность со всеми данными - это trace.
вот именно максимализм в слове ВСЯ меня пугает.
Есть код очистки списков. Обычный цикл.
Нечего там логировать. Рехнуться можно в классах на 100000 строк кода.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301777
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Рехнуться можно в классах на 100000 строк кода.
Если подходить к таким классам с точки зрения максимализма - тут не то что логированием, тут рефакторингом пахнет. :)

Кроме того, полное логирование это хороший запас для увеличения производительности. :)
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301999
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Atum1следовательно логировать нужно последовательность действий
в уровне Debug.
в уровне Error - сигнальная схема только сигнализирующая.

ну когда в прод навернется что то нужна будет именно Debug а не урезанная Error :)
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302068
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1ну когда в прод навернется что то нужна будет именно Debug а не урезанная Error :)
ммммм. Можно по разному.
Можно же написать переход в уровень debug сразу после райзе. Или по команде админа в горячем режиме.
Как навернётся, так и включим для разбора что произошло.
Иначе у вас продакшен не отличается от тестового.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302076
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxiflyЕсть подсистема работы с БД, ее попросили создать объект. База вернула ошибку "INDEX DUPLICATED". С точки зрения этой подсистемы - это уровень ERROR (запрос не выполнился - это плохо), а с точки зрения бизнес логики, которая эту подсистему пользует - это может быть и INFO - а то и вообще DEBUG (попытались создать объект, убедились что он есть и пошли по другой ветке алгоритма).

Вечный спор у меня с аналитиками на эту тему.
Если у вас запросы постоянно долбятся в constraint, а Exception является частью сценария, то это повод задуматься.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302103
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxiflyAlexey Tomin В момент создания exception логи не пишутся.

И как Вы потом разбираетесь, почему какое-то действие не выполнено было?

Всё должно быть опсано в exception. Потом, если это оказалось реально ошибкой, то этот exception логируется.

Иначе да, получается "тут не получилось, мы напишем в лог ERROR'ов, кинем exception" а для клиента это нормальная ситуация и в логах будет куча ERROR'ов, которые не ошибки.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302125
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominВсё должно быть опсано в exception. Потом, если это оказалось реально ошибкой, то этот exception логируетсяРечь, насколько я понимаю, несколько о другом.
Например, ошибки ввода-вывода, как правило, не поддаются никакому контролю с вашей стороны, поэтому кинуть исключение - разумно.
Но, даже если схема базы "исторически сложилась" - проектировали-то её под конкретную задачу. Поэтому глупо "на авось" создавать объекты и ловить исключения там, где должна быть штатная процедура, отрабатывающая штатный же сценарий использования.
Исключения в такой процедуре, конечно могут быть, но они должны быть именно что сигналом ошибки.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302146
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominВсё должно быть опсано в exception. Потом, если это оказалось реально ошибкой, то этот exception логируется.
Иначе да, получается "тут не получилось, мы напишем в лог ERROR'ов, кинем exception" а для клиента это нормальная ситуация и в логах будет куча ERROR'ов, которые не ошибки.

Отличное замечание. Точно в цель. Когда ты начинаешь игнорировать Exception-ы и считать их штатным workflow, то возникает отличный шанс проигнорировать исключение, которое вызвано реальным сбоем.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302155
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКогда ты начинаешь игнорировать Exception-ы и считать их штатным workflow, то возникает отличный шанс проигнорировать исключение, которое вызвано реальным сбоем.Возникает, но такова суровая правда жизни.
Как пример - всё тот же ввод-вывод.
Если исключение вызвано отвалившимся диском - это сигнал тревоги для системы мониторинга, а точно такое же исключение при чтении HTTP-запроса - запись в логе уровня info, как максимум .
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302225
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAlexey TominВсё должно быть опсано в exception. Потом, если это оказалось реально ошибкой, то этот exception логируется.
Иначе да, получается "тут не получилось, мы напишем в лог ERROR'ов, кинем exception" а для клиента это нормальная ситуация и в логах будет куча ERROR'ов, которые не ошибки.

Отличное замечание. Точно в цель. Когда ты начинаешь игнорировать Exception-ы и считать их штатным workflow, то возникает отличный шанс проигнорировать исключение, которое вызвано реальным сбоем.

моно примеры на пальцах двух ваших высказываний?
Пример такой ситуации и пример логирования кода ... для нее ?!
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302267
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С exception бывает вообще замечательно:

В Oracle CC&B warning'и кидались Exception'ом. Но можно было выставить флаг, что бы они не кидались. Жесть. Сначала выполняем код - получаем Exception, который warning. Потом нужно еще раз запустить этот код с флагом, что бы не кидать warning'и.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302287
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1моно примеры на пальцах двух ваших высказываний?
Пример такой ситуации и пример логирования кода ... для нее ?!

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
try {
...
} catch(SQLException e) {
   if(e.getMessage().contains("my_db_constraint_name")){
         sendMessage("Already Exist");
   } else {
         throw e;
   }
}



А потом у нас меняется имя констрейнта или вендор БД и эта красота перестаёт работать.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302297
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovAlexey TominВсё должно быть опсано в exception. Потом, если это оказалось реально ошибкой, то этот exception логируетсяРечь, насколько я понимаю, несколько о другом.
Например, ошибки ввода-вывода, как правило, не поддаются никакому контролю с вашей стороны, поэтому кинуть исключение - разумно.

Да.

Basil A. SidorovНо, даже если схема базы "исторически сложилась" - проектировали-то её под конкретную задачу. Поэтому глупо "на авось" создавать объекты и ловить исключения там, где должна быть штатная процедура, отрабатывающая штатный же сценарий использования.
Исключения в такой процедуре, конечно могут быть, но они должны быть именно что сигналом ошибки.

Вполне может быть так, что уникальность логина нового пользователя контролируется уникальностью в БД. Как результат- БД кидает исключение. С точки зрения слоя ДАО это именно что исключение. Но выше, где-то на уровне UI, оно превращается во вполне стандартное окошко пользователю про то, что такой логин уже есть.

Логирование уровня WARN и выше должно быть именно в тот момент, когда уже принято решение относительного того, что делать с ошибкой.
До этого можно писать DEBUG или TRACE.
INFO - лучше тоже раньше времени не писать.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302320
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работать с исключениями нужно так как будто они необычайно редкие.
Это семантически заложено в сам термин. К примеру если вы парсите CSV
файл на OVER миллион строк и отрабатываете NumberFormatException или
ParseException при работе с датами то нужно понимать что вы никак не ожидаете
миллион выбрасываний этого события иначе ваши мегафлопы будут полностью
поглощены механизмом конструирования объектов-исключений.

Ставте workaround. Проверка с регуляркой или просто строковые операции
чтобы максимально отсрочить выброс этого тяжелого объекта.

+Еще разворачивание стека, если вы его логгируете средствами log4j
тоже ударит по перформансу.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302464
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonиначе ваши мегафлопы будут полностью
поглощены механизмом конструирования объектов-исключений.
Ну а потом появляются методики переиспользования одного и того же объекта ибо для обрабатываемого исключения стек то и не нужен. :)
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302491
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

тут есть момент: тяжеая операция при работе с исключениями - это заполнение стектрейса внутри объекта исключения. Если его не заполнять, то можно получить серьезный выигрыш.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Как и что вы логируете ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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