我喜欢记录很多。在我的Rails应用我有很多的类似的方法:如何分离功能和登录红宝石方法
def my_method(argument1:, argument2:)
logger.info "Starting my_method with arguments: #{argument1} and #{argument2}"
result = argument1 + argument2
logger.info "Finished my_method with result: #{result}"
end
如何分离的功能和方法的记录?。
理想的结果会是这个样子(借用Rails的回调概念只是作为一个例子):
before_method: :my_method_log_start, only: :my_method
after_method: :my_method_log_end, only: :my_method
def my_method(argument1:, argument2:)
result = argument1 + argument2
end
private
def my_method_log_start
logger.info "Starting my_method with arguments: #{argument1} and #{argument2}"
end
def my_method_log_end
logger.info "Finished my_method with result: #{result}"
end
我知道这是代码行方面效率较低,它更可读(我的想法是)。
我已阅读关于Aspect Orient Programming以及Aquarius等宝石的一些内容,但看起来像是一种矫枉过正的做法,只是为了记录而添加了新的范例。
有[性能开销(http://guides.rubyonrails.org/debugging_rails_applications.html#impact-of-logs-on-performance)还加入了一堆日志语句 - 我建议你学习如何使用调试器或写测试,而不是依靠日志作为糟糕技术的拐杖。 – max