【问题标题】:Log4r - output is unorderedLog4r - 输出无序
【发布时间】:2013-06-13 08:17:26
【问题描述】:

我是 Rails 的新手,我的 Rails 项目有问题。我使用 Log4r 作为我的记录器。我还在 How to configure Log4r with Rails 3.0.x? 使用了 Log4r 的配置。但是当我同时发送一些请求时,Log4r 的输出有错误。它是无序的。 :(

错误输出日志文件示例:

Started GET "/task_results.json" for 172.29.73.182 at 2013-06-17 17:36:38 +0700
Processing by TaskResultsController#index as JSON

Started GET "/favicon.ico" for 172.29.73.182 at 2013-06-17 17:36:38 +0700
Processing by ApplicationController#missing_page as 
  Parameters: {"path"=>"favicon"}
Completed 404 Not Found in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
  [1m [36m (994.0ms) [0m   [1mSELECT task_result_id,task_id,worker_id,product_id,passed,date_time,details FROM task_results ORDER BY task_result_id DESC; [0m
Completed 200 OK in 8656ms (Views: 0.2ms | ActiveRecord: 994.0ms)

我想问我如何配置 Log4r 来同步输出?或者我该如何解决我的问题?

【问题讨论】:

    标签: ruby-on-rails logging config output log4r


    【解决方案1】:

    ruby 是单线程的,所以我假设您正在像 unicorn 这样的服务器上运行您的 rails 应用程序?

    我能想到的唯一解决方案是时间戳(以微秒计)并且不使用多行 Rails 日志输出,这不适合开发环境中的单个请求以外的任何内容。但即使这样也不能保证“有序”日志,因为它们可以在请求被处理时写入,或者在缓冲区再次刷新时随机写入。

    这是一个in-depth tutorial on how to use Log4r,它还展示了如何将自定义时间戳记到您的日志中,并在一行中包含所有重要信息。这可以防止来自其他请求的日志写入您的主请求中,并且您可以有一个微秒的时间戳分辨率,然后手动订购。但是,如果您正在运行并发应用服务器,则顺序无关紧要,因为无论如何都不能保证顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多