Ситуация такая.
Есть множество разных классов, в разных модулях, методы которых вызываются внешней программой. Внешняя программа хочет, чтобы все они возвращали True или False. Производительность несущественна. В подавляющем большинстве методов делаются просто какие-то подготовительные действия, поэтому естественно просто обернуть весь метод в блок try, и, в случае успеха, возвращать True.
Но есть проблема. Что если таки если возникнет исключение? Соотвественно нужно логирование. Поскольку в каждом модуле уже есть логгер со своим собственным именем (он вне класса, так как их внутри модуля несколько бывает, использующих один логгер), то следует использовать его, а не принт или собственный логгер, определенный в модуле с декоратором.
Решение: Определим декоратор
Собственно вопрос в том, что получения логгера посредством vars(sys.modules[arg.__module__])['logger'] кажется мне довольно костыльным возможно зря, тогда достаточно мня успокоить и вопрос закрыт. Оно и правда такое? А есть ли более адекватный/короткий/красивый способ решить ту же задачу? То есть вызвать логгер из модуля, в котором находится декорируемый метод.
Можно использовать и не декоратор, но понятное дело, что вариант "лучше вручную в каждом методе подправить код" мне нравится куда меньше текущего