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

xiaoxiao · 2024年11月12日 · 最后由 Rei 回复于 2024年11月12日 · 213 次阅读

目前项目中使用 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 关闭了讨论。 11月21日 14:00
需要 登录 后方可回复, 如果你还没有账号请 注册新账号