我喜歡記錄很多。在我的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