Added fluentd store

Andrew Kane committed May 04, 2015
commit 07709d24d43e4b5464818b8e4a1eeb9a0c37299c
Showing 6 changed files with 62 additions and 2 deletions
README.md +16 -0
@@ @@ -68,6 +68,22 @@ rake db:migrate
rails generate ahoy:stores:mongoid
```
+ ### Fluentd [master]
+
+ Add [fluent-logger](https://github.com/fluent/fluent-logger-ruby) to your Gemfile.
+
+ ```ruby
+ gem 'fluent-logger'
+ ```
+
+ And run:
+
+ ```sh
+ rails generate ahoy:stores:fluentd
+ ```
+
+ Use `ENV["FLUENTD_HOST"]` and `ENV["FLUENTD_PORT"]` to configure.
+
### Logs
```sh
ahoy.rb b/lib/ahoy.rb +1 -0
@@ @@ -22,6 +22,7 @@ require "ahoy/stores/base_store"
require "ahoy/stores/active_record_store"
require "ahoy/stores/active_record_token_store"
require "ahoy/stores/log_store"
+ require "ahoy/stores/fluentd_store"
require "ahoy/stores/mongoid_store"
require "ahoy/engine"
require "ahoy/warden" if defined?(Warden)
ahoy/stores/fluentd_store.rb b/lib/ahoy/stores/fluentd_store.rb +17 -0
@@ @@ -0,0 +1,17 @@
+ module Ahoy
+ module Stores
+ class FluentdStore < LogStore
+ def log_visit(data)
+ logger.post("visit", data)
+ end
+
+ def log_event(data)
+ logger.post("event", data)
+ end
+
+ def logger
+ @logger ||= Fluent::Logger::FluentLogger.new("ahoy", host: ENV["FLUENTD_HOST"] || "localhost", port: ENV["FLUENTD_PORT"] || 24224)
+ end
+ end
+ end
+ end
ahoy/stores/log_store.rb b/lib/ahoy/stores/log_store.rb +10 -2
@@ @@ -11,7 +11,7 @@ module Ahoy
yield(data) if block_given?
- visit_logger.info data.to_json
+ log_visit(data)
end
def track_event(name, properties, options, &block)
@@ @@ -27,11 +27,19 @@ module Ahoy
yield(data) if block_given?
- event_logger.info data.to_json
+ log_event(data)
end
protected
+ def log_visit(data)
+ visit_logger.info data.to_json
+ end
+
+ def log_event(data)
+ event_logger.info data.to_json
+ end
+
# TODO disable header
def visit_logger
@visit_logger ||= ActiveSupport::Logger.new(Rails.root.join("log/visits.log"))
generators/ahoy/stores/fluentd_generator.rb b/lib/generators/ahoy/stores/fluentd_generator.rb +15 -0
@@ @@ -0,0 +1,15 @@
+ require "rails/generators"
+
+ module Ahoy
+ module Stores
+ module Generators
+ class FluentdGenerator < Rails::Generators::Base
+ source_root File.expand_path("../templates", __FILE__)
+
+ def create_initializer
+ template "fluentd_initializer.rb", "config/initializers/ahoy.rb"
+ end
+ end
+ end
+ end
+ end
generators/ahoy/stores/templates/fluentd_initializer.rb b/lib/generators/ahoy/stores/templates/fluentd_initializer.rb +3 -0
@@ @@ -0,0 +1,3 @@
+ class Ahoy::Store < Ahoy::Stores::FluentdStore
+ # customize here
+ end