model icon indicating copy to clipboard operation
model copied to clipboard

Unable to control production DB log

Open ablce9 opened this issue 4 years ago • 1 comments

The db log is always logged and we'd like to make it go away at production environment. Looked through documentations and source code and finally reached this PR. I reckon no options available to disable SQL logging? I worked on a few hours and found a workaround that is:

# config/initializers/models.rb
unless Hanami.env?(:development)
  Hanami::Model.configuration.connection.loggers = []
end

The solution worked.

Is this a legit solution to disable log? This issue should be tagged as question.

Tried following but nothing seems effective

# config/environment.rb
  model do
    adapter :sql, ENV.fetch('DATABASE_URL') 

    gateway do |g|
      g.use_logger(Hanami::Logger.new(nil, '/dev/null'))
      g.connection.loggers = []
    end

    logger '/dev/null'

    ##
    # Migrations
    #
    migrations 'db/migrations'
    schema     'db/schema.sql'
  end

ablce9 avatar Jan 04 '21 03:01 ablce9

I faced with a similar problem - I expected changing log_level to "info" should disable SQL logs (similar to Rails logger) but it just does not work. When I change the log level to "warn" - SQL logs disappear. So I think the problem is in SQL logs level as well. I found this line https://github.com/jeremyevans/sequel/blob/master/lib/sequel/database/logging.rb#L22 which seems not fine for those who are familiar with Rails logger. In general, I like that Hanami supports JSON logs formatter which is not supported natively by Rails, but I would like to have some kind of match between SQL log levels (opportunity of logger configuration like described above is something important as well) here is my solution:

# /initializers/sequel.rb
Hanami::Model.configuration.connection.sql_log_level = :debug

skcc321 avatar Jul 08 '21 12:07 skcc321