Как добавить имя класса и метод в rails logger - PullRequest
1 голос
/ 20 марта 2020

У меня есть приложение rails, в которое я хочу добавить пользовательский форматер журналов. В журналах я хочу динамически показать класс, где был вызван код, и метод, который его вызвал. Я не вижу простого способа сделать это в Rails Logger docs . В настоящее время в методе initialize классов моего приложения я делаю @logger = self.progname, чтобы получить класс, и @logger.level("#{__callee__}: some message", чтобы получить метод.

Я могу написать собственный класс ведения журнала и назначить его для config.log_formatter в .../config/environments/production.rb что нормально. Как я могу добавить средство форматирования, которое будет динамически сообщать мне, в каком классе и в каком методе я работаю, когда регистрирую материал?

1 Ответ

0 голосов
/ 20 марта 2020

Я бы предположил, что класс будет отражен объектом self, хотя это может быть сложно. Я думаю, что обычно вам нужен класс self для метода экземпляра, но для одноэлементного метода (класса) вы хотите, чтобы self.

Так что вы можете использовать

self.kind_of?(Class) ? self.name : self.class.name

Looks как вы уже используете __callee__, чтобы получить метод.

...