Ruby 在 development 模式下怎么关闭 active_job 日志写入到 development.log

xiaoxiao · November 12, 2024 · Last by Rei replied at November 12, 2024 · 229 hits

目前项目中使用 rails5,使用的是 sidekiq,有个从前端上传 canvas 到后端存储的需求,每次上传 development.log 日志里面就会有个大长串的 canvas base64 的字段,很影响观感,不知道怎么关闭,配置 config/initializers/filter_parameter_logging.rb 不行,配置 config/environments/development.rb 也不行

config/initializers/filter_parameter_logging.rb
Rails.application.config.filter_parameters += [:password,:image]
config/environments/development.rb
config.active_job.logger = Logger.new(nil)
[ActiveJob] [PdfJob] [a7be2eda-d8cf-4d50-bc71-903fe44bf420] Performing PdfJob (Job ID: a7be2eda-d8cf-4d50-bc71-903fe44bf420) from Sidekiq(default) with arguments: {"image"=>"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACUwAAA0oCAYAAABOaEMiAAAAAXNSR0IArs4c6QAAIABJREFUeF7svQeXZNW1JvhdGxEZmVlVVBWuAIGEE0LCG4GE9LTU/UtnpmfWm+63Vr813fOmW14ICSOMDAgEDys8VZUmMiKum7X3PufeE5H37BMVoWyQ0GUVlZUR1x2z7be/HTVN0+ALeNjHor/7fi6LxPvU9EYlau/ndQXU/o/V0YgiIIritUesbmqgAb9T91416JnjOEKaZsp7def0fYnOB+jP8SOKGqSRf6pjeidzKj9b3YCfFfKsSZzztfvmg35XliV/N4oi/kPPYsdJzqFr0e9k/Oyz0r+ras3JACBz2f/O9Dx1M6c38IxphDQZesd7TuO1f4Dh7/6I4ic/RfX888gPL6JMC1yuJtjKxogjWYf0jnVN8yj3ov83oy2kV53D7v33Y+sH38XRXXdgLx0DEyArgCYqvPdOPvoAyXsfYv78y9j71TOo33kLW4Ma8TjGUTQD5nPUF27E4IGHMX7oUcRfuQX11g7iNEMxb1AfznD6.........

job 的参数是 data:image?不建议参数用太大的对象。把对象保存以后传 id。

是的,目前页面功能需求是在前端上绘制 canvas 内容,然后将前端的 canvas 调用 toDataURL 上传到后端存储功能,我调研了下目前几种改法,一种是新增一个文件 app/initializers/active_job_logger_patch.rb 强制重写如下,

class ActiveJob::Logging::LogSubscriber
  private def args_info(job)
    ''
  end
end

另一种 rails6 有种很方便如下,但是我是 rails5 用不了

class ApplicationJob < ActiveJob::Base
  self.log_arguments = false
end

把图片塞到 job 的参数,小心 redis 内存不够用。

xiaoxiao closed this topic. 21 Nov 14:00
You need to Sign in before reply, if you don't have an account, please Sign up first.