reidmorrison/rails_semantic_logger

Sidekiq: ERROR Could not log "sql.active_record" event. ArgumentError: comparison of Symbol with 0 failed

PrajnaYaji18 opened this issue · 1 comments

Environment

Provide at least:

  • Ruby Version : ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
  • Rails Version: Rails 5.2.4.6
  • Rails Semantic Logger Version: 4.4.4
  • Sidekiq version: 6.4.1
  • Rails configuration: N/A
  • Full Stack Trace, if an exception is being raised:
ERROR Could not log "sql.active_record" event. ArgumentError: comparison of Symbol with 0 failed ["./vendor/cache/ruby/2.7.0/gems/sidekiq-6.4.1/lib/sidekiq/logger.rb:39:in `<='", "./vendor/cache/ruby/2.7.0/gems/sidekiq-6.4.1/lib/sidekiq/logger.rb:39:in `debug?'", "./vendor/cache/ruby/2.7.0/gems/activerecord-5.2.4.6/lib/active_record/log_subscriber.rb:22:in `sql'" ...

Note:

Expected Behavior

  • Sidekiq logger should work without any exception after upgrading it from 5.2.1 to 6.4.1

Actual Behavior

  • logger is raising expection for sql queries

I think this behaviour is because
Sidekiq expects logger level to be integer (https://github.com/mperham/sidekiq/blob/v6.4.1/lib/sidekiq/logger.rb#L39) but semantic logger returns it as symbol/string

That is an invalid assumption on Sidekiq's part. Nothing we can do about it here. Unless you can get sidekick to use the public apis then you will need to monkey-patch Sidekiq to make it work.
The public api's use things like .debug? for checking the level.