舉例來說,如果我有這樣的回調:如何記錄被調用的回調方法?
after_create :notify_users
當那個叫,我怎麼能登錄類似「notify_users方法被稱爲」我的日誌文件?
我的應用程序中實際上有幾個回調函數。我知道我可以在notify_users
方法中添加諸如puts 'notify_users method is being called'
之類的東西,但有沒有辦法自動記錄所有回調?
舉例來說,如果我有這樣的回調:如何記錄被調用的回調方法?
after_create :notify_users
當那個叫,我怎麼能登錄類似「notify_users方法被稱爲」我的日誌文件?
我的應用程序中實際上有幾個回調函數。我知道我可以在notify_users
方法中添加諸如puts 'notify_users method is being called'
之類的東西,但有沒有辦法自動記錄所有回調?
想想看:
module Log
def log *args
args.each do |m|
alias_method m.to_s + '_old', m
define_method m do |*args|
send(m.to_s + '_old', *args)
puts "#{m} is called"
end
end
end
end
class C
def m1
puts 'm1'
end
def m2
puts 'm2'
end
extend Log
log :m1, :m2
end
C.new.m1
C.new.m2
提供:
m1
m1 is called
m2
m2 is called
def notify_users
logger.info "notify_users method is being called"
end
謝謝。我實際上有幾個回調。有沒有辦法爲所有被調用的回調動態執行此操作,而不是爲每個回調添加「logger.info ..」? – sjsc
[跟蹤/日誌ActiveRecord的回調(的可能的複製http://stackoverflow.com/questions/13089936/tracking -logging-activerecord-callbacks) –