- 浏览: 287367 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 646推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 437nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 830业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 751class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 530require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 497针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1113<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 867gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 598def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 692sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 880链接参数中添加token def self.query_p ... -
railsAPI接收Base64文件
2018-12-18 11:05 999tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 936例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 395关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1066def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1039[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1304登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1143pdf&excell&png # rend ... -
基于mini_magick多图片合并/添加水印
2018-07-02 17:44 1656class ImageService requi ...
相关推荐
koa-logs-full 为什么要再造个轮子?...默认监听错误,在出错时,自动打出错误日志。 在日志目录下会按照环境名+日期+.log的格式维护对应的日志文件。 支持个性化的日志内容样式定制,使用实现 支持c风
15.5 Rails的日志 200 15.6 调试信息 200 15.7 精彩预告 202 第16章 Active Support 203 16.1 通用扩展 203 16.2 枚举和数组 204 16.3 Hash 205 16.4 字符串扩展 206 16.5 数值的扩展 208 16.6 时间和日期的扩展 208...
Google Cloud Run上的Rails 关于Google Cloud Run上Rails的有针对性的日志记录,错误报告和次要补丁。 适用于Ruby 3和Rails 6。 logger . info "Hello World"logger . info do "Expensive logging operation, only ...
旨在保留UTIM大学社区便携式设备的进入/退出日志的项目。 其开发在Rails v4.1.0中实现 目前执行: *注册/编辑/搜索设备和所有者** 注册设备时,它会列出注册的所有者,然后创建一个新的* 设备进出记录* 查看收支...
它还使编写发票文档,显示所有时间日志说明等变得容易。 还支持组织访问,因此组织可以为各种任务编写评论和反馈。 用Ruby on Rails编写。 贡献于令人敬畏的任务 请检查最新的母版,以确保尚未实现该功能或尚未...
美丽的:: Log(beta) 使Rails日志更漂亮! 彩色日志 多亏了 ,记录的消息根据其级别脱颖而出。 消息排列精美,因此您... 您所需要做的就是挽救错误,只需将其记录为Rails.logger.error e 。 登录Rake任务 仅通过向
后燃器 Backburner是一个由作业队列,可以处理非常大量的作业。... 此外,Backburner还具有强大的支持,可用于重试失败的作业,处理错误情况,自定义日志记录和可扩展的插件挂钩。 为什么选择Backburner? Bac
约路线图: 改善错误处理和日志记录(当前几乎不存在) 解决Linux兼容性(当前或多或少不存在) 实施不同的类型检查严格性元编程助手/安全性:* 抽象类和方法编译时的方法查找/存在检查方法重载相关项目: Rails助手...
变更日志 版本0.1-编写了gem类(请勿使用此版本) 版本0.2-消除了在OutputReader的缓冲区中混合输出的错误(是一个静态变量,现在是实例变量。是的,那我在想什么?)。 记录代码。 做了一些小错误修正。 版本0.2.1-...
* 默认支持 Python/Ruby on Rails 语法加亮 * 改进语法加亮速度 (长行) *“未修改文档禁用保存按钮”选项 (“参数设置”-“文件”) * 在分隔命令中显示制表符和空格 * 在文件中查找允许以“;”号间隔的多文件夹名称 ...
* 默认支持 Python/Ruby on Rails 语法加亮 * 改进语法加亮速度 (长行) *“未修改文档禁用保存按钮”选项 (“参数设置”-“文件”) * 在分隔命令中显示制表符和空格 * 在文件中查找允许以“;”号间隔的多文件夹名称 ...
信息变更记录更改日志可以在repo的发布页面错误报告如果您发现Phonelib gem的问题,请告诉我们。 应用范例您可以在此gem的spec / dummy应用程序中看到通过phonelib进行ActiveRecord验证的示例入门Phonelib是在Rails>...
变更日志 参见 发展历程 欢迎提出请求。 如果您要添加新功能,请先; 这样,您可以(中等)确定您的请求将被接受。 如果您要将自己的gem /开源项目与Honeybadger集成在一起,请考虑向我们的gem提交一个官方插件。 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...
以运行时异常的方式来管理错误的响应 使用泛型来做强类型编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 ...