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 |