logcraft icon indicating copy to clipboard operation
logcraft copied to clipboard

Conflicts with Sentry APM monitoring

Open lauer opened this issue 2 years ago • 3 comments

So after some debug, I found out, that if you are using Sentry (https://docs.sentry.io/platforms/ruby/guides/rails/configuration/options/) together with this Gem, you will hit some strange logger error in the broadcast_logger.rb

[GEMSPATH]/gems/activesupport-7.1.2/lib/active_support/broadcast_logger.rb:102:in `block in debug': undefined method `debug' for #<Logging::Logger:0x0000000109c9f928 @name="Application", @parent=#<Logging::RootLogger:0x0000000108ffa4c0 @name="root", @appenders=[#<Logging::Appenders::Stdout:0x000000010b612130 @io=#<IO:<STDOUT>>, @close_method=:close, @buffer=[], @immediate=[], @auto_flushing=1, @async=false, @async_flusher=nil, @flush_period=nil, @name="stdout", @closed=false, @filters=[], @mutex=#<ReentrantMutex:0x0000000109d71f90 @locker=nil>, @layout=#<Logcraft::LogLayout:0x000000010ac03900 @global_context={}, @formatter=#<Proc:0x000000010ac4ab48 [GEMSPATH]/logcraft-2.2/lib/logcraft/log_layout.rb:7 (lambda)>, @level_formatter=#<Proc:0x000000010ac4aa58 [GEMSPATH]/gems/logcraft-2.2/lib/logcraft/log_layout.rb:8 (lambda)>>, @level=0, @encoding=#<Encoding:UTF-8>, @write_size=500>], @additive=false, @caller_tracing=false, @level=1>, @appenders=[], @additive=true, @level=1, @caller_tracing=false> (NoMethodError)

      dispatch { |logger| logger.debug(*args, &block) }

So the solution is in the Sentry configuration, to set the logger like config.logger = Sentry::Logger.new($stdout) And don't let is use the default Rails.logger which this gem overwrites.

This should maybe be added as a note some where in this documentation. Or maybe ensure that this does not happens.

lauer avatar Dec 07 '23 14:12 lauer

Thanks for reporting this, I'll take a look at it as soon as I have some time.

zormandi avatar Dec 07 '23 17:12 zormandi

Phew, this was an "interesting" one. It turns out that this issue is a confluence of two separate problems - neither of which is related to Logcraft. One is that sentry-rails - for some reason - duplicates the Rails logger stack (https://github.com/getsentry/sentry-ruby/blob/master/sentry-rails/lib/sentry/rails/configuration.rb#L15). The other one is that the logging gem (which Logcraft is based on) relies on metaprogramming to define its logging methods, hence it cannot be duplicated.

The problem should really be addressed in either of these gems but for now I pushed a workaround into Logcraft.

zormandi avatar Dec 19 '23 17:12 zormandi

New version is released with the fix.

zormandi avatar Dec 19 '23 17:12 zormandi