Как правильно, логично, на продакшене выводить логи?
Я понимаю, что чем подробнее логи, тем легче потом ошибки исправлять.
Например, в файл нужно выводить debug уровень, а в консоль чем меньше, тем лучше.
И тут пришла дилемма, так как в спринг есть несколько способов конфигурации логов, я выбрал самый простой, но он урезанный, я указываю в конфиге 3 строчки, 2 на файлы настройку и третья на уровень общего логгирования. Что выводится в консоль, то и запишется в файл. То есть в консоль уровень debug будет спамить оооооооочень часто, что не есть хорошо для винды
Если ли это хорошо? Все свои наблюдения и опыт разработки, поделитесь пжл)
P. S. Есть подробная конфигурация, хоть на каждый объект логгера пиши в отдельные файлы, но это нужно изучить, разобрать, ибо библиотек для логгирования куча, и попробуй разобраться во всех и не запутаться. И чем проще, тем лучше
1) Наиболее оптимальный вариант, это не писать логи вообще, поставив логи только на ошибки. То есть отлавливать ошибку и тут же выводить в лог. 2) Появилась проблема? Вот тут уже надо начинать обкладывать проблему логами, чтобы найти причину. Но потом, когда ты решил проблему, этот мусорный лог стоит удалить. 3) Есть ещё понятие лог результата. В программе есть очень мощный алгоритм, результат которого НЕ выводится на фасад, фротенд. Поэтому результат пишем в логи. В общем, выполнился алгоритм - выводим результат в логи через:
if(IS_LOG_R) Log.i(line,result);
Если что телеметрию можно отключить установив IS_LOG_R в false.
В случае ошибки, лог ошибки дополняется логом результатов. Очень полезно, когда проьлема возникает у пользователя программы, а не у тебя. Позволяет быстрее локализовать проблему.
4) Ещё есть отдельные логи не принадлежащие твоему коду. Тут нужно либо отклбчить, либо минимизировать количество логов. Включать следует при поиске ошибок.
В общем, логгирование нужно для поиска проблем. Логи бывают временные, для локализации ошибки, логи результата, и библиотечные логи. Как оно бывает? Ошибку сначала ищут у себя, потом ищут в библиотеке, потом в ОС, потом в драйверах, и уже последнее в аппаратной части.