Skip to content
This repository
branch: master

bump version

latest commit 3a73e9f2b3
Edward Muller authored
Octocat-spinner-32 lib bump version November 01, 2013
Octocat-spinner-32 spec test fix April 19, 2013
Octocat-spinner-32 .gitignore fixups June 17, 2011
Octocat-spinner-32 .travis.yml try 2.0.0 September 11, 2013
Octocat-spinner-32 Gemfile use multi_json February 08, 2013
Octocat-spinner-32 LICENSE add a license March 04, 2011
Octocat-spinner-32 README.md README April 19, 2013
Octocat-spinner-32 Rakefile initial commit February 26, 2011
Octocat-spinner-32 logglier.gemspec "Fix" gemspec and bump version September 11, 2013
README.md

Overview

Build Status

Send logged messages to Loggly using either the HTTP API or Syslog/UDP.

Can be used in place of Ruby's Logger (http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/)

In fact, it (currently) returns an instance of Logger.

Usage

require 'logglier'

log = Logglier.new(<INPUT URL>)

log.info("hello from logglier")

With Rails

config/environments/production.rb

RailsApplication::Application.configure do
  config.logger = Logglier.new(<INPUT URL>)
end

Input URLs

HTTP Inputs

Logglier.new('https://logs.loggly.com/inputs/<id>')

The id is provided by loggly, look at the input's details page To make sure the http client doesn't block too long read_timeout and open_timeout are set to 2 seconds by default. This can be overridden like so:

Logglier.new('https://logs.loggly.com/inputs/<id>',
             :read_timeout => <#>,
             :open_timeout => <#> )

Threaded Delivery

Creating a new Logglier instance, pointed at a http input, with the :threaded => true option will tell Logglier to deliver log messages for that logger in a seperate thread. Each new Logglier instance gets it's own delivery thread and those threads are joined at exit to ensure log message delivery.

Example:

Logglier.new('https://logs.loggly.com/inputs/<id>',
             :threaded => true)

JSON Formatting

add the ':format => :json' when creating a new Logglier instance. Make sure to use a HTTP input that has JSON enabled. Can also be used with threaded delivery.

Example:

Logglier.new('https://logs.loggly.com/inputs/<id>',
             :format => :json)

Logglier uses MultiJson to delegate the choice of JSON libraries to you, but I recommend using Yajl, just require the json gem of your choice before logglier.

Syslog TCP/UDP Inputs

Logglier.new('[udp|tcp]://<hostname>:<port>/<facility>')

The facility is optional and defaults to 16 (local0) if none is specified. Facilities are just integers from 0 to 23, see http://www.faqs.org/rfcs/rfc3164.html

Logging

Logglier.new returns a ruby Logger object, so take a look at:

http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/

The Logger's logdev has some special format handling though.

Logging a string

log.warn "test"

Will produce the following log message in Loggly:

"<Date> severity=WARN, test"

Logging a Hash

log.warn :boom => :box, :bar => :soap

Will produce the following log message in Loggly:

"<Date> severity=WARN, boom=box, bar=soap"

Bugs

https://github.com/freeformz/logglier/issues

Pull requests welcome

TODO

  • Support ActiveSupport Notifications for newer rails
  • Alternative https implementations (Typheous, Excon, etc). May be faster?
  • EM Integration?
Something went wrong with that request. Please try again.