До сих пор я всегда использовал «put», чтобы добавить пользовательскую информацию для регистрации в мой код.Но сейчас это своего рода боль.Когда я запускаю rspec для примера, меня не интересуют все подробности, которые я добавил с путами.Поэтому я установил «гем logging and logging-rails», потому что его установка очень быстрая и удовлетворительная.
Он хорошо работает, когда я вызываю logger из моделей и контроллера, но не когда я использую logger внутри библиотек.Я получаю эту ошибку: NameError - неопределенная локальная переменная или метод `logger 'для CustomLib: Class.
Самое простое, что мне удалось - это вызвать' Rails.logger 'вместо простого' logger '.Но таким образом в моем лог-файле класс, ссылающийся на эту строку, будет «Rails», но я хочу «CustomLib».Для моделей и контроллеров правильное имя класса отображается без какого-либо вмешательства со стороны меня.
# config/environnement/test.rb
# Set the logging destination(s)
config.log_to = %w[stdout]
config.log_level = :info
# Show the logging configuration on STDOUT
config.show_log_configuration = false
# lib/custom_lib.rb
class CustomLib
def initialize
Rails.logger.info 'foo'
end
end
Когда я буду использовать или тестировать свой класс customlib, я получу: [2019-06-21T16: 26:41] INFO Rails: foo
Вместо этого я хотел бы видеть: [2019-06-21T16: 26: 41] INFO CustomLib: foo
Я немного растерялся во всем этом журналеуправление в рельсах, я понятия не имею, что делать дальше, чтобы достичь этой цели ...
Edit
Когда я ставлю byebug прямо перед строкой "logger.info 'foo'" ивойдите в него с помощью «step», я получу два разных результата, если я нахожусь в модели / контроллере или в пользовательской библиотеке.
# In custom lib, step enters this file "gems/logging-2.2.2/lib/logging/logger.rb"
# And Rails.logger returns an object like this one beloow
Logging::Logger:0x000055a2182f8f40
@name="Rails",
@parent=#<Logging::RootLogger:0x000055a2182e7ee8
@name="root",
@level=1>,
# In model/controller, step enters this file "gems/logging-rails-0.6.0/lib/logging/rails/mixin.rb"
# And Rails.logger returns an object like this one beloow
Logging::Logger:0x0000557aed75d7b8
@name="Controller",
@parent=#<Logging::RootLogger:0x0000557aedfcf630
@name="root",
@level=0>,