some
[appoyo.git] / vendor / plugins / facebooker / lib / facebooker / logging.rb
blobc0d33c254febef73a6081ed87c2c74f5336059fe
1 require 'benchmark'
2 module Facebooker
3   @@logger = nil
4   def self.logger=(logger)
5     @@logger = logger
6   end
7   def self.logger
8     @@logger
9   end
11   module Logging
12     @skip_api_logging = nil
13     class << self; attr_accessor :skip_api_logging; end
15     def self.log_fb_api(method, params)
16       message = method # might customize later
17       dump = format_fb_params(params)
18       if block_given?
19         result = nil
20         seconds = Benchmark.realtime { result = yield }
21         log_info(message, dump, seconds) unless skip_api_logging
22         result
23       else
24         log_info(message, dump) unless skip_api_logging
25         nil
26       end
27     rescue Exception => e
28       exception = "#{e.class.name}: #{e.message}: #{dump}"
29       log_info(message, exception)
30       raise
31     end
33     def self.format_fb_params(params)
34       params.map { |key,value| "#{key} = #{value}" }.join(', ')
35     end
37     def self.log_info(message, dump, seconds = 0)
38       return unless Facebooker.logger
39       log_message = "#{message} (#{seconds}) #{dump}"
40       Facebooker.logger.info(log_message)
41     end
42     
43   end  
44 end