- 浏览: 302598 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件和功能如下:
消息发送:ActiveSupport::Notifications
instrument: 通知subscribers
消息订阅:ActiveSupport::LogSubscriber
发送邮件的时候记录日志
消息发送:ActiveSupport::Notifications
instrument: 通知subscribers
消息订阅:ActiveSupport::LogSubscriber
require 'active_support/configurable' module RailsLog include ActiveSupport::Configurable configure do |config| config.ignore_exception = [ 'ActionController::UnknownFormat' ] config.constraint = -> (req){ User.find_by(id: req.env['rack.session']['user_id'])&.admin? } end end
module RailsLog class ControllerSubscriber < ActiveSupport::LogSubscriber def header_processing(event) return unless logger.debug? payload = event.payload headers = request_headers(payload[:env]) debug " Headers: #{headers.inspect}" end def process_action(event) payload = event.payload if payload[:exception].present? unless RailsLog.config.ignore_exception.include? payload[:exception_object].class.to_s lc = LogRecord.new lc.path = payload[:path] lc.controller = payload[:controller] lc.action = payload[:action] lc.params = payload[:params].except('controller', 'action') lc.headers = request_headers payload[:headers] lc.cookie = payload[:headers]['rack.request.cookie_hash'] lc.session = payload[:headers]['rack.session'].to_hash lc.exception = payload[:exception].join("\r\n") lc.exception_object = payload[:exception_object].class.to_s lc.exception_backtrace = payload[:exception_object].backtrace.join("\r\n") lc.save info 'exception log saved!' end end end def logger ActionController::Base.logger end def request_headers(env) result = env.select { |k, _| k.start_with?('HTTP_') && k != 'HTTP_COOKIE' } result = result.collect { |pair| [pair[0].sub(/^HTTP_/, ''), pair[1]] } result.sort.to_h end end end RailsLog::ControllerSubscriber.attach_to :action_controller
发送邮件的时候记录日志
class ApplicationMailer < ActionMailer::Base def process(method_name, *args) payload = { mailer: self.class.name, action: method_name, message_object_id: self.message.object_id, params: args } ActiveSupport::Notifications.instrument('record.action_mailer', payload) super end def self.deliver_mail(mail) ActiveSupport::Notifications.instrument('deliver.action_mailer') do |payload| set_payload_for_mail(payload, mail) payload[:message_object_id] = mail.object_id result = yield if result.is_a? Net::SMTP::Response payload[:sent_status] = result.status payload[:sent_string] = result.string end end end end ------- module RailsLog class MailerSubscriber < ActiveSupport::LogSubscriber def record(event) payload = event.payload log_mailer = LogMailer.new(message_object_id: payload[:message_object_id], mailer: payload[:mailer]) log_mailer.action = payload[:action] log_mailer.params = payload[:params] log_mailer.save info 'mailer log saved!' end def deliver(event) payload = event.payload log_mailer = LogMailer.find_or_initialize_by(message_object_id: payload[:message_object_id], mailer: payload[:mailer]) log_mailer.sent_status = payload[:sent_status] log_mailer.sent_string = payload[:sent_string] log_mailer.save info 'mailer log updated!' end end end RailsLog::MailerSubscriber.attach_to :action_mailer
发表评论
-
git仓库创建
2020-09-04 15:33 713推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 478nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 904业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 855class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 568require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 537针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1161<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 995gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 688def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 732sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 930链接参数中添加token def self.query_p ... -
railsAPI接收Base64文件
2018-12-18 11:05 1044tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 1036例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 448关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1181def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1091[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1401登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1181pdf&excell&png # rend ... -
基于mini_magick多图片合并/添加水印
2018-07-02 17:44 1715class ImageService requi ...
相关推荐
- **日志记录**:Rails提供了丰富的日志记录机制,帮助开发者监控应用程序的运行状态。 **2. 路由** - **路由的目的**:路由定义了URL与应用程序内部逻辑之间的映射关系,它是控制请求处理流程的关键部分。 - **...
8. **错误处理与日志记录**: 在后台任务中,确保捕获并记录异常,以便于调试。同时,使用日志记录工具(如 Logger 或 Rails 的 logging 功能)记录任务的执行过程。 9. **测试后台任务**: 应该为后台任务编写单元...
8. **错误处理与日志记录**: 中间件通常会包含错误处理机制,捕获可能出现的问题,并记录日志,方便开发者调试和优化应用。 9. **版本更新与社区支持**: 作为开源项目,`weixin_rails_middleware` 不断地接受...
- **日志记录**: 解释了Rails的日志记录机制,包括如何配置日志级别、日志格式化等内容。 ##### 2. 路由 - **路由的目的**: 解释了路由在Rails中的重要性,即映射URL到控制器动作。 - **`routes.rb`文件**: 讲解...
5. **插件系统**:Ruby-Karafka拥有一个可扩展的插件系统,可以自定义和增强框架的功能,如监控、日志记录和错误处理。 6. **异步处理**:支持异步消息处理,提高了吞吐量和系统的响应速度,同时降低了对CPU和内存...
- **在更新时锁定记录**:说明如何在更新记录时加锁以避免并发问题。 - **联结表**:讲解如何处理多对多关联关系。 - **及早加载关联**:介绍如何预先加载关联对象以避免N+1查询问题。 - **作用域**:解释如何定义...
- 错误处理和日志记录:确保应用程序能够优雅地处理错误,并通过日志记录进行调试和监控。 通过以上几个方面,我们可以看到 **Flex on Rails** 的强大之处在于它能够充分利用前后端技术的优势,构建出既美观又高效...
7. 错误处理和日志记录:通过使用如Rails的Action Controller的异常处理机制,确保系统在遇到问题时能够优雅地失败,并记录详细的错误日志供排查问题。 在"WirelessOrder-Server-master"这个压缩包中,可能包含了...
4. **企业级特性**:可能涉及安全(如认证和授权)、性能优化、错误处理、日志记录、部署策略等在大型项目中至关重要的主题。 综上所述,这个压缩包中的电子书对想要深入学习Ruby on Rails,特别是从事企业级应用...
8. **错误处理和日志记录**:在两个不同语言的环境中,如何有效地进行错误处理和日志记录,确保问题定位的便捷性。 9. **安全性**:探讨如何保护数据的安全,防止SQL注入等攻击,以及在API通信中的身份验证和授权...
同时,通过New Relic或Logentries等监控工具,可以实时监控系统的性能和日志,及时发现并解决问题。 综上所述,利用Ruby on Rails开发学生选课系统,不仅可以充分利用其高效的开发模式和丰富的社区资源,还能为教育...
koa-logs-full 为什么要再造个轮子?...默认监听错误,在出错时,自动打出错误日志。 在日志目录下会按照环境名+日期+.log的格式维护对应的日志文件。 支持个性化的日志内容样式定制,使用实现 支持c风
6. **监控与日志**:集成后,确保能够监控Sidekiq在Java环境下的性能,包括任务处理速度、错误率等,并且要有合适的日志记录,以便于问题排查。 7. **性能优化**:根据Java和Rails的特性,调整并发度、内存使用等...
Sidekiq提供了Web界面,用于监控队列状态、查看工作进程和错误日志。只需在Rails应用中添加路由和控制器,就可以访问这个界面。此外,Sidekiq还支持与其他监控工具如New Relic、Sentry等集成。 五、优化与扩展 1. ...
MongoDB Logger是专门为Ruby on Rails应用设计的一个日志记录器,它将日志信息存储在MongoDB数据库中,而非传统的文本文件。这个替代方案对于那些使用MongoDB作为主要数据存储的Rails应用尤其有用,因为它提供了集成...
- **脏数据追踪**:新增的脏数据追踪功能允许开发者轻松检测模型对象哪些属性发生了变化,这对于实现高效的审计日志和变更历史记录功能极为关键。 - **命名范围(Named Scope)**:通过命名范围,开发者可以定义重用的...
- **时间戳自动转换**:当用户提交表单时,Rails会自动将用户输入的时间戳转换为其所在时区的时间,从而避免了时区转换错误。 ##### 修改追踪(Dirty Tracking) 在Rails 2.1中,模型类现在内置了修改追踪功能。这...
10. **日志记录**:在`log`目录下的日志文件可以提供关于文件上传操作的详细信息,这对于排查问题非常有用。确保日志配置得当,以便在出现问题时能快速定位。 升级Rails版本涉及的文件上传变更可能需要对代码进行...