powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как и что вы логируете ?
55 сообщений из 55, показаны все 3 страниц
Как и что вы логируете ?
    #39300793
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день .

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

Насколько детально ваш код покрыт логами (на 100 строк бизнес кода) итд ...
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39300819
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,

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

Вы это, мысль раскройте пошире. 50 запросов в секунду по 1 кб на запрос - это 4 гига логов в сутки. А нагрузки бывают и выше, а системы бывают и микросервисные, и каждый микросервис должен что-то логгировать. Так что логгирование приходится вести очень аккуратно. У вас какой-то другой опыт?
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39300853
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfВы это, мысль раскройте пошире.
Взаимно.

scf50 запросов в секунду по 1 кб на запрос - это 4 гига логов в сутки.
У вас фиксированое количество логов на каждый запрос?

scfА нагрузки бывают и выше, а системы бывают и микросервисные, и каждый микросервис должен что-то логгировать. Так что логгирование приходится вести очень аккуратно. У вас какой-то другой опыт?
Бывает. А бывает и кластер игрового сервера с тысячами клиентов онлайн. И логируется не только работа сервера, но и GC лог включен.

Ну, и 4 гига это же фигня в наше время. Недельный лог вполне можно хранить. А если ещё и про компресиию вспомнить, то и вообще за месяц можно собрать данные
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39300861
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Вообще логгирование - это тема обширная и почему-то плохо освещенная в литературе. Размер на запрос, конечно, не фиксированный, но границу снизу и сверху почти всегда можно назвать.

С хранением все немного сложнее, т.к. логи не хранятся мертвым грузом. Они парсятся, индексируются и складываются в централизованное хранилище, их анализирует алертинг, по ним строятся всякие-разные графики.

У нас используется такая классификация логов:
- трассировка (по умолчанию выключена)
- отладочные (включены только local/dev)
- сетевые (логгирование запроса и ответа)
- аудит (логгирование действий пользователя, имеющих смысл для аудита)
- инфо (большая часть их не относится к индивидуальным запросам, скорее они обозначают изменение состояние приложения - т.е. запуск и какие-то перенастройки)
- неинтересные/ожидаемые ошибки (ошибки валидации входных данных, некоторые сетевые ошибки) - т.е. формально ошибки, но они никому не интересны, разве что в виде статистики
- внезапные ошибки (типичный пример - NPE)
- ошибки, требующие внимания системного администратора
- ошибки, требующие немедленного внимания системного администратора

Уровни логгирования тут важны постольку-поскольку - главное, чтобы нужные категории логов было удобно фильтровать по уровню логгирования + чтобы парсер мог уверенно различать разные типы логов.

Вообще, я повторюсь, тут можно на целую статью материала накатать.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39300881
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наиболее встречающийся вариант:
1.При создании класса и на начальном этапе все прямо правильно логгер даже заинжектен, все как надо.
2.В процессе разработки/отладки добавляется System.out.println()
3.Вроде бы отлажено и сделано, ну надо логи добавить - такыются везде info "на отвали".
4.Вроде как-то работает криво, в лог пишется какая-то каша, обычно лог открывают далее Ctrl+F Exception.
5.Если размер лога покажется большим, его тупо удаляют.
Вот как-то так)))
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39300886
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892такыются везде info "на отвали".
жизненно
))
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301084
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1Собственно интересует сама методология , ваш подход , как вы определяете уровни логирования , в какой момент и как пишите в лог итд ...
Насколько детально ваш код покрыт логами (на 100 строк бизнес кода) итд ...
TRACE - уровень на котором выводится полная информация о данных. Дампы запросов, объектов, XML и т.п.
DEBUG - уровень анализа - покрывает ВСЕ ветвления кода, чтобы по логу было видно весь сценарий по которому работала программа.
INFO - менее детальный аналог DEBUG - покрывает наиболее критичные изменения состояния системы.
WARN - подозрительные ситуации, которые не критичны для отработки сценария, но которые не ожидаются при штатной работе системы.
ERROR - все сбои
FATAL - критичные сбои при которых дальнейшая работа системы не возможна. В принципе особой пользы в этом уровне нет, можно и в ERROR логировать.

Это я понимаю .

Вопрос немного о другом - как вы определите в своем коде нужна в этой строке строка с логгером и какого уровня.

Не после каждой же строки писать вывод в лог?

Если ли какой-то документ разработанный внутри вашей команды программистов - как покрывать код логами .


чтобы открыв люобй файл с кодом вы увидели достаточно ли там логов или нет ...


к тому же логгеры в коде - достаточно мусорный код получается ?! можно и через аспекты все логировать .
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301092
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfBlazkowicz,

Вы это, мысль раскройте пошире. 50 запросов в секунду по 1 кб на запрос - это 4 гига логов в сутки. А нагрузки бывают и выше, а системы бывают и микросервисные, и каждый микросервис должен что-то логгировать. Так что логгирование приходится вести очень аккуратно. У вас какой-то другой опыт?

вот тут они логируют любое движение курсора - потому хотят понять по нему о чем думал пользователь ...

https://habrahabr.ru/company/badoo/blog/280606/

ИМХО это перегиб.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301122
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1вот тут они логируют любое движение курсора - потому хотят понять по нему о чем думал пользователь ...

https://habrahabr.ru/company/badoo/blog/280606/

ИМХО это перегиб.

Статью не читал. Но по поводу перегиба - смотря для чего. Если on-line игры, то могут пытаться ботов вычислять. Поиск ботов, я так понимаю, одна из основных задач в on-line игровом бизнесе, дабы бото-воды монитизацию сжирают.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
на такой вопрос тебе никто не ответит.
Увы.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301166
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
вот тебе привели - жизнь ))
19610928
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301168
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
как вариант:
- если программист хороший, то он вслепую, без логов что объект создан....пишет код.
И заполняет только Error...try
А дальше - требования компании. Не знаю, скрин кто выложит тут или нет).
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301226
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Это да ...

В одном из проектов :
Я логи убрал в Аспекты - получилось всё завернуто в логи - каждый метод и каждый параметр таким образом ...

уровень так же проставляется - код чистый итд ...

если NPE - или ошибка в критической секции - то сразу , но асинхронно письмо на саппорт что там то и там то ошибка
и стек трейс всем разработчикам полная инфа в письме + сразу в редмайне таск открывается .
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301235
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Petro123,

Это да ...

В одном из проектов :
Я логи убрал в Аспекты - получилось всё завернуто в логи - каждый метод и каждый параметр таким образом ...

уровень так же проставляется - код чистый итд ...

если NPE - или ошибка в критической секции - то сразу , но асинхронно письмо на саппорт что там то и там то ошибка
и стек трейс всем разработчикам полная инфа в письме + сразу в редмайне таск открывается .
Потом тригерится событие на автофиксинг, заливается в репозиторий оттуда континус интегрэйшн прогоняет тесты и выкладывает на прод.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301275
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,

+ ДА есть дженкинс который все это собирает - прогоняя 100500 тестов ,

если все ок - то пакует все в докер (docker) и выкладывает в Хаб откуда это берут и разливают по серверам ...

но это история не про логирование .

Мне интересно методология логирования :)

кроме

Petro123вот тебе привели - жизнь ))
19610928

в инете нет достойных статей - все на интуиции и на совести разработчика ...
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301287
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfAtum1,

Сильно зависит от нагрузки. Если приложение рассчитано на 50+ запросов в секунду, особо не пологгируешь.

как то раз мы обнаружили, что нас досят, как раз потому что место кончилось - все логами забилось :)
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301304
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСильно зависит от нагрузки. Если приложение рассчитано на 50+ запросов в секунду, особо не пологгируешь.
Async logging на другой комп.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301315
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892,

другой комп тоже не резиновый. А так да, в приличном обществе принято логгировать на отдельный примонтированный раздел, чтобы ОС не страдала от нехватки места если что.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301320
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Собственно интересует сама методология , ваш подход , как вы определяете уровни логирования , в какой момент и как пишите в лог итд ...

Насколько детально ваш код покрыт логами (на 100 строк бизнес кода) итд ...

Всё это - вопрос вкуса.
Уровни- на тестовом сервере и локально включен debug, на продакшн- info.
Обычно влючать весь trace опасно- завалит нафиг, надо включать для конкретных потоков.

На error логи обычно вешается что-нибудь вроде sentry, которая позволяет не проморгать проблемы. Плюс в zabbix. На интеграционных тестах это повод считать тест заваленным.

Вот что делать с warn не очень понятно. На проде никто читать это не будет, на тесте и локально- не увидишь. Тут, честно, я в замешательстые. Разве что так же в sentry пихать (и НЕ пихать в zabbix).

В дойч-банке (по крайней мере в high-load части) есть традиция писать только info и debug. Я работал в группе, где такое внедрили. Неудобно.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301414
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1к тому же логгеры в коде - достаточно мусорный код получается ?! можно и через аспекты все логировать .Вы неправильно подходите к протоколированию.
Есть две задачи - аудит и собственно протоколирование.
Аудит не знаю, а протоколирование это замена отладчика, т.к. рано или поздно возникнет ситуация, когда ничего, кроме лога у вас просто не будет, а "на тесте" или/и "под отладчиком" проблема не воспроизведётся.
Соответственно, протоколировать надо так, чтобы читая лог вы понимали что происходило в системе.
Как минимум, протоколироваться должны все сомнительные места и так, чтобы расхождение реального поведения с ожидаемым вызывало запись нужного вам уровня.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301419
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominВот что делать с warn не очень понятноНа самом деле, ещё notice не хватает На проде никто читать это не будетЕсли всякую фигню пихать - да, поэтому в предупреждениях должна быть информация к размышлению для админа.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39301437
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovAtum1к тому же логгеры в коде - достаточно мусорный код получается ?! можно и через аспекты все логировать .Вы неправильно подходите к протоколированию.
Есть две задачи - аудит и собственно протоколирование.
Аудит не знаю, а протоколирование это замена отладчика, т.к. рано или поздно возникнет ситуация, когда ничего, кроме лога у вас просто не будет, а "на тесте" или/и "под отладчиком" проблема не воспроизведётся.
Соответственно, протоколировать надо так, чтобы читая лог вы понимали что происходило в системе.
Как минимум, протоколироваться должны все сомнительные места и так, чтобы расхождение реального поведения с ожидаемым вызывало запись нужного вам уровня.
+1 лучше и не скажешь.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #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
Как и что вы логируете ?
    #39302837
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominВполне может быть так, что уникальность логина нового пользователя контролируется уникальностью в БД. Как результат- БД кидает исключение. С точки зрения слоя ДАО это именно что исключение. Но выше, где-то на уровне UI, оно превращается во вполне стандартное окошко пользователю про то, что такой логин уже есть.Вся это цепочка - логическая ошибка проектирования.
1. Проверить существование объекта не настолько накладно, чтобы этого нельзя было ещё до вставки.
2. Сегодня ограничение отключат для технологической операции, а потом не включат или потому, что забыли или потому, что "реально дубль, но всем пофиг, т.к. увидят штатное исключение, но только на уровне DAO". А послезавтра начнут рвать волосы на разных частях тела, т.к. дублей станет существенно больше трёх.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302868
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton+Еще разворачивание стека, если вы его логгируете средствами log4j
тоже ударит по перформансу.
JVM обнаружит часто выкидываемое исключение и выкинет из него stacktrace нафиг, ибо нефиг. Разве не так?
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39302979
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov1. Проверить существование объекта не настолько накладно, чтобы этого нельзя было ещё до вставки.

Ну проверил. Нету. Вставил- а уже есть. Мало ли кто ещё вставляет.

Каждому своё. БД хорошо обеспечивает уникальность- пусть делает.

Но пусть будем - insert from select where not exists- но всё одно- то, что exception в точке его создания, может оказаться нормальной ситуаций выше. Как пример- мы знаем, что связь плохая и выше делаем N попыток выполнить сетевой запрос. Или просто (внешний) сервис иногда может 500 возвращать.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39303058
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominНу проверил. Нету. Вставил- а уже есть. Мало ли кто ещё вставляет.Совершенно верно.
Только это уже будет однозначная ошибка. Не техническая, так организационная. А не "здесь - рыба, там - не играем".Как пример- мы знаем, что связь плохая и выше делаем N попыток выполнить сетевой запрос. Или просто (внешний) сервис иногда может 500 возвращать.А зачем люди с конями мешаются в одну кучу???
Про N попыток авансом - вообще шедевр, а вставка дубля должна возвращать "400 Bad request", что никак не пересекается с 5xx группой.
...
Рейтинг: 0 / 0
Как и что вы логируете ?
    #39303581
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКак пример- мы знаем, что связь плохая и выше делаем N попыток выполнить сетевой запрос. Или просто (внешний) сервис иногда может 500 возвращать.А зачем люди с конями мешаются в одну кучу???
Про N попыток авансом - вообще шедевр, а вставка дубля должна возвращать "400 Bad request", что никак не пересекается с 5xx группой.

Я не об этом.
Внешний сервис может быть с багами- такова жизнь.
Говоришь "сделай нечто", а он такой "уйди старушка, я в печали"- 500 тебе в морду. А то и 400 кинет- когда как. Делаешь ещё раз- о, сработало.
Сервис внешний, багрепорты можно слать сколько угодно.

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


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