我是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来同步输出?或者我如何解决我的问题?
发布于 2013-12-01 17:43:07
ruby是单线程的,所以我假设你是在像unicorn这样的服务器上运行rails应用程序?
我能想到的唯一解决方案是时间戳(使用微秒),而不是使用多行Rails日志输出,它只适合开发环境中的单个请求。但即使这样也不能保证日志是“有序的”,因为它们可以在服务请求时写入,也可以在之后再次刷新缓冲区时的随机时间写入。
这是一个in-depth tutorial on how to use Log4r,它还展示了如何在日志中添加自定义时间戳,并在一行中包含所有重要信息。这可以防止其他请求在您的主请求中写入日志,并且您可以将时间戳解析为微秒,然后手动排序。但是,如果您正在运行并发应用服务器,那么顺序应该无关紧要,因为无论如何都不能保证其中的顺序。
https://stackoverflow.com/questions/17146478
复制相似问题