Tag: 伐木

每个操作分离rails日志

我有rails 3应用程序,它会产生大量的分析请求。 不幸的是,这会淹没日志,我失去了我真正关心的主页请求。 我想将这些请求分成一个单独的日志文件。 有没有办法指定某些操作转到某个日志文件? 或者可能是一种降低这些操作的日志记录级别的方法,然后在回读日志文件时只显示某些级别日志?

如何将对rails控制器操作的调用静音

我已经弄清楚如何通过在actionger的方法中将所有内容包装在logger.silence块中来使行为的内容静音。 但是,我仍然可以调用日志文件中显示的操作。 IE: Processing DashboardController#update (for 66.201.17.166 at 2009-09-09 19:03:27) [GET] Parameters: {“todos”=>{“user”=>”25”, “sfu_type”=>””}} Completed in 1021ms (View: 439, DB: 438) | 200 OK [http://my.host.com/dashboard/update?todos%5Buser%5D=25&todos%5Bsfu_type%5D=] 我想要保持上述内容不要一起写入日志,或者将其重定向到不同的日志文件(即dashboard.log),这样它就会停止使production.log文件混乱。 每次登录的每个用户的ajax调用更新时,我都会将上面的示例写入日志。这大约每2分钟更新一次,因此生产日志文件充斥着无用的日志消息。

重定向Rails 3中特定控制器的记录器输出

我们希望有一组控制器,我们将记录器输出从所有操作和下游方法路由到单独的日志文件。 这是一个Rails 3项目。 在Rails 2中,我们通过重新定义“logger”方法来实现这一点,但在Rails 3中,记录的方式是使用“Rails.logger”。 我试过推杆 Rails::logger = Logger.new(File.join(Rails.root, ‘log’, “reports_controller.log”), 10, 1000000) 在控制器的顶部,但只有在操作中专门使用Rails.logger的特定情况才会被发送到指定的日志文件,控制器的所有默认日志输出仍然路由到主日志文件。 我们如何将特定控制器的所有日志输出路由到特定日志文件以包含所有默认控制器输出? 默认情况下,控制器输出,我指的是从入站请求的最开始处开始的所有消息 Started POST “/api/v1/reports.json” for 10.XXX.XX.XX at 2015-03-07 01:30:22 +0000 Processing by Api::V1::ReportsController#create as JSON Parameters: {“report”=>{“cloud_file_path”=>”report.zip”, “company_id”=>nil, “created_at”=>”2015-03-07T01:30:17Z”, “type_id”=>”2”, “updated_at”=>”2015-03-07T01:30:17Z”, “master”=>”1”}} 以及控制器中的入站请求和出站响应可能跟随的所有日志输出。 基本上我希望报告控制器的所有日志记录都在reports_controller.log中,我不希望报告控制器的任何消息显示在主日志中(即生产中的production.log) 更新: 感谢@ mudasobwa对他的回答和聊天的帮助,我能够使用中间件解决这个问题,因为他的答案描述了(尽管我必须将我的insert_before更改为Rails :: Rack :: Logger之前) 他解决了我的修改后的答案如下,它存在于config/initializers/logger_middleware.rb module MyApp class LoggerMiddleware REPORTS_API_CONTROLLER_PATH = %r|\A/api/v.*/reports/.*| […]

动态更改Ruby Logger的LogDevice

是否可以动态更改Ruby Logger的LogDevice ? 如果是这样,它将允许对我现有的代码库进行一些不显眼的更改。 目前Ruby Logger使用StringIO作为LogDevice : @logDevice = StringIO.new(“”, “r+”) @log = Logger.new(@logDevice) // a reference to this is used by many objects // both are instance vars … @log.info(‘some log’) // Logging activity … // Before program ends, transmit logs to a server LogDevice可以动态更改LogDevice以继续记录到文件? (动态更改,因为最初文件名未知。) 或者如果日志设备无法更改, StringIO对象是否可以开始写入文件? 我可以写入临时日志文件,而不是执行上述操作,但是想检查是否可以执行上述操作,因为这对现有代码库来说是一个不那么突兀的更改。

ruby:无法使用带有rspec的记录器

我正在尝试将日志记录添加到简单的rspec测试中。 我正在使用Watir在规范中驱动Chrome,这很好用。 我无法使用“Logger”库获取日志。 这是我的规格: require ‘rubygems’ require ‘watir-webdriver’ require ‘rspec’ require ‘logger’ describe ‘ui tests’ do let(:browser) { browser ||= Watir::Browser.new :chrome } let(:log) { log = Logger.new(STDOUT) log = Logger.new(‘watir.tests.log’, ‘daily’) log.level = Logger::DEBUG } before { browser.goto ‘http://translate.google.com’ } after { browser.close } context ‘simple tests’ do it ‘simple test’ do log.info(“Running simple […]

Ruby中的自定义日志记录最佳实践

在Ruby中管理自定义日志记录的最佳实践是什么? 我应该做monkeypatching logger来做我想做的事吗? 或从它延伸? 还是委托? 什么是ruby的方式? 我厌倦了习惯性的黑客攻击; 我想要更清洁的东西,理想的是更优雅。

修改Rails 3中默认ActionController LogSubscriber的日志格式和内容

语境: 在rails 3项目中,我想(大量)自定义ActionController中“Processing”和“Completed in”日志行的格式和内容。 这是为了让它们与旧版rails 2.3 app的(也是自定义)格式相匹配,允许重复使用各种分析工具。 使它们成为固定字段(通过在必要时使用占位符)也可以更容易地使用(例如)awk对它们进行即席查询,或者在没有智能解析的情况下将它们加载到db或splunk中。 我通过分叉导轨和修补有问题的LogSubscriber快速而严谨地实现了这个目标,但我现在正在寻找正确的方法。 这是我想我想做的事情: 创建一个inheritanceActionController::LogSubscriber 。 仅覆盖start_processing和process_action方法。 取消订阅原始的ActionController::LogSubscriber ,它(遗憾地)在加载类后立即注册。 这是我坚持的步骤。 使用attach_to将我的自定义订阅者附加到:action_controller attach_to 。 我注意到,如果默认ActionController的日志订阅者的连接是作为配置步骤而不是类加载完成的,事情会更容易。 题: 假设上面概述的方法是合适的,我如何取消订阅或取消附加默认日志订阅者ActionController::LogSubscriber ? 基类ActiveSupport :: LogSubscriber提供了attach_to但没有分离的方法。 或者,在上面提到的类ActionController :: LogSubscriber中 ,改变(或完全抑制)两个方法(start_processing,process_action)的行为的最简洁方法是什么 。 当然,我也欢迎任何其他(可维护的)方法,它可以完全自由地定制所提到的两行的日志格式。 不合适的方法: 我的问题不能通过添加仪器来解决,正如mnutt很好地记录的那样 。 我想避免猴子修补,或者在rails实现(不是接口)改变时可能会破坏的方式进行黑客攻击。 参考文献: ActiveSupport::LogSubscriber 文档和来源 ActionController::LogSubscriber源ActionController::LogSubscriber ActiveSupport::Notifications Docs , Source和RailsCast

如何使用Logger.new创建文件夹(如果不存在)?

我正在尝试注册一个新日志 @@my_logger ||= Logger.new(“#{Rails.root}/log/my.log”) 但是当我尝试生成新文件夹时,将其放入其中 @@my_logger ||= Logger.new(“#{Rails.root}/log/today.to_s/my.log”) 它返回Errno::ENOENT: No such file or directory 可能是许可问题? 如何使用Logger.new创建文件夹(如果不存在)?

Rake:记录任何正在执行的任务

如何在不更改任务源的情况下为每个rake任务创建数据库日志记录? 我需要存储日期时间,任务名称和参数。 是否有某种观察者等?

如何格式化ruby logger?

你如何格式化ruby记录器?