Fluent logger

A structured event loger

Examples

Simple

require 'fluent-logger'

EventLogger = Fluent::Logger::ConsoleLogger.new(STDOUT)

module Event
  AccessEvent = EventLogger.create_event('access', :agent, :action=>'access')
end

#=> access: action="access" agent="foo"
Event::AccessEvent.agent('foo').post!

Singleton

require 'fluent-logger'

Fluent::Logger::ConsoleLogger.open(STDOUT)

module Event
  AccessEvent = Fluent::Logger.create_event('access', :agent, :action=>'access')
end

#=> access: action="access" agent="foo"
Event::AccessEvent.agent('foo').post!

Combine events

require 'fluent-logger'

EventLogger = Fluent::Logger::ConsoleLogger.new(STDOUT)

module Event
  User = EventLogger.create_event('user', :name, :age)
  LoginEvent = EventLogger.create_event('login', :action=>'login')
  BuyEvent = EventLogger.create_event('buy', :item, :action=>'login')
end

e_user = Event::User.name('me').age(24)

#=> login: action="login" name="me" age=24
Event::LoginEvent.with(e_user).post!

#=> buy: action="login" name="me" age=24 item="item01"
Event::BuyEvent.with(e_user).item("item01").post!

Update created events

require 'fluent-logger'

EventLogger = Fluent::Logger::ConsoleLogger.new(STDOUT)

module Event
  User = EventLogger.create_event('user', :name, :age)
  AgeChangeEvent = EventLogger.create_event('age_change', :changed_age, :action=>'age_change')
  BuyEvent = EventLogger.create_event('buy', :item, :action=>'buy')
end

e_user = User.name('me').age(24)

#=> age_change: action="age_change" name="me" age=24 changed_age=25
Event::AgeChangeEvent.with(e_user).changed_age(25).post!
e_user.age!(25)

#=> buy: action="buy" name="me" age=25 item="item01"
Event::BuyEvent.with(e_user).item("item01").post!

Update created events by combining

require 'fluent-logger'

EventLogger = Fluent::Logger::ConsoleLogger.new(STDOUT)

module Event
  User = EventLogger.create_event('user', :name, :age)
  Browser = EventLogger.create_event('browser', :host, :agent)
  LoginEvent = EventLogger.create_event('login', :action=>'login')
end

e_user = Event::User.name('me').age(24)
e_browser = Event::Browser.host('remoteip').agent('firefox')
e_user.with!(e_browser)

#=> login: action="login" name="me" age=24 host="remoteip" agent="firefox"
Event::LoginEvent.with(e_user).post!

Loggers

Console

Fluent::Logger::ConsoleLogger.open(io)

Syslog

Fluent::Logger::SyslogLogger.open(ident=$0, level=:info)

Fluent

Fluent::Logger::FluentLogger.open('tag_prefix', 'host', port=24224)
Web site

fluent.github.com/

Documents

fluent.github.com/doc/

Source repository

github.com/fluent

Author

Sadayuki Furuhashi

Copyright

© 2011 FURUHASHI Sadayuki

License

Apache License, Version 2.0