Pull to refresh

Comments 13

Данное решение не является противопоставлением стандартному логгеру, а скорее дополняет его в некоторых ситуациях. Особенно при отладках сложных расчетов (в моем случае).

А чем стандартный логгер не устроил?

"Фатальный недостаток", увы. Сорри за сарказм, но других причин я не вижу.

Есть, но к примеру для отладки web view (если вы работаете с фреймворком аля Django) он вам вряд ли будет полезен. Впрочем вы можете поделится опытом.

loguru закрывает бОльшую часть потребностей, может выводить стектрейс с содержимым переменных в текущей строке и еще дофига всего.

А, да, и еще он не тащит за собой pydantic, pika (?!?) и остальные странные зависимости, которые вы зачем-то требуете.

И тесты у него есть.

Спасибо за интересное решение. Посмотрю.

По поводу pydantic и pika, они нужны для логирования в кликхаус через rabbitmq. Возможно кому то это также пригодится, но об этой возможности я не стал писать, чтобы не перегружать статью. Примеры есть в документации на github.

Андрей, я постараюсь написать помягче, но не факт что у меня получится..

Ваш код ужасен. Я зашел на гитхаб и попробовал посмотреть на исходники.

Мало того что этот проект (просто логгер!) тащит за собой какие-то левые файлы с кликхаусом (?), так еще и ставит библиотеки, которые совсем не нужны для заявленной задачи. Файл с кликхаусом, кстати, работать все равно не будет, поскольку он импортирует библиотеку, которая не ставится.

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

ну это вот уже вообще за гранью добра и зла. А потом оно еще будет тащить десятки мегабайт из, скажем, pandas? Вдруг понадобится кому?

Я даже не буду ничего говорить про сам код. Какие-то assert, куча условий.. И, вдобавок, все тело великой функции "sprint()" спрятано под условием "if DEBUG or broker". Хитро.

Для себя вы можете писать какие угодно велосипеды (и каждый для себя пишет), какого угодно качества. Но если уж вы оформляете это в статью - хотя бы делайте это качественно. Ну и будьте готовы к критике как в этом комментарии, например.

Cделал рефакторинг, пофиксил по вашим замечаниям. Спасибо за критику.

Теперь "минимальный" пакет ставится pip install simple-print

"Максимальный" pip install simple-print[broker]

И да вы правы, это изначально внутренний велосипед для текущих задач, но все же я думаю кому то он будет весьма полезен.

from simple_print import sprint

my_var = 42

sprint(myvar)

Так просто короче и быстрее.

Повторюсь. Я не делал это в противовес чему либо и чужие решения не критикую. Кому то возможно пригодится мое.

Кажется вы лечите симптомы.

Предположим что вы работаете с каким либо классом, в котором к примеру
~3000 строчек. Количество "принтов" увеличивается, и понять с первого
раза какой "принт" к какой переменной относится становится не просто.

Это плохой код, тут не принты нужны а рефакторинг.

Немного кокретики на примере вашей библиотеки. У кода неприлично высокая цикломатическая сложность. Это проблема. Перепишите на сложность не более 10 и тогда проблема с тем, что непонятно откуда идёт печать изчезнет.

кто разрабатывает веб приложения (и не только) на удаленном сервере

Эту жутко неудобно, но иногда приходится. Я решаю эту проблему юнит тестами. При этом подходе практически ничего не надо удалённо дебажить.

К сожалению иногда вам подобные классы достаются в "наследство" от кого-то еще, а задача на рефакторинг задвигается в беклог.

Sign up to leave a comment.

Articles