Module: TreasureData::Logger::RailsAgent

Defined in:
lib/td/logger.rb

Defined Under Namespace

Modules: ControllerLogger Classes: Middleware

Constant Summary collapse

CONFIG_SAMPLE =
<<EOF
defaults: &defaults
  apikey: "YOUR_API_KEY"
  database: myapp
  table: access

test:
  <<: *defaults

development:
  <<: *defaults

production:
  <<: *defaults
EOF
CONFIG_PATH =
'config/treasure_data.yml'

Class Method Summary collapse

Class Method Details

.init(rails) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/td/logger.rb', line 72

def self.init(rails)
  c = read_config(rails)
  return unless c

  require 'fluent/logger'
  if c.agent_mode?
    Fluent::Logger::FluentLogger.open(c.tag, c.agent_host, c.agent_port)
  else
    require 'td/logger/tdlog'
    TreasureDataLogger.open(c.apikey, c.database, c.auto_create_table)
  end

  rails.middleware.use Middleware
  ActionController::Base.class_eval do
    include ::TreasureData::Logger::RailsAgent::ControllerLogger
  end
end

.read_config(rails) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/td/logger.rb', line 90

def self.read_config(rails)
  logger = Rails.logger || ::Logger.new(STDOUT)
  begin
    yaml = YAML.load_file("#{RAILS_ROOT}/#{CONFIG_PATH}")
  rescue
    logger.warn "Can't load #{CONFIG_PATH} file."
    logger.warn "  #{$!}"
    logger.warn "Put the following file:"
    logger.warn sample
    return
  end

  conf = yaml[RAILS_ENV]
  unless conf
    logger.warn "#{CONFIG_PATH} doesn't include setting for current environment (#{RAILS_ENV})."
    logger.warn "Disabling Treasure Data logger."
    return
  end

  begin
    return Config.new(conf)
  rescue
    logger.warn "#{CONFIG_PATH}: #{$!}."
    logger.warn "Disabling Treasure Data logger."
    return
  end
end