logglier 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :gemcutter
2
+
3
+ gemspec 'logglier'
data/README.md ADDED
@@ -0,0 +1,25 @@
1
+ Overview
2
+ --------
3
+
4
+ Posts Logger messages to Loggly using the HTTP API.
5
+
6
+
7
+ Usage
8
+ -----
9
+
10
+ require 'logger'
11
+ require 'logglier'
12
+
13
+ log = Logger.new(Logglier.new(<INPUT URL>))
14
+
15
+ log.info("hello from logglier")
16
+
17
+
18
+ TODO
19
+ -----
20
+
21
+ * Alternative https implementations (Typheous, Excon, etc). May be
22
+ faster?
23
+ * Option to use Syslog (via UDP and/or TCP) inputs. Possibly faster than
24
+ the https inputs.
25
+ * Do logging in a seperate thread. Is this useful? Too complex?
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ #require 'rspec/core'
2
+ require 'rspec/core/rake_task'
3
+
4
+ task :default => :spec
5
+
6
+ desc "Run all specs in spec directory"
7
+ RSpec::Core::RakeTask.new do |task|
8
+ task.rspec_opts = ["-c"]
9
+ end
10
+
@@ -0,0 +1,47 @@
1
+ require 'net/https'
2
+ require 'uri'
3
+
4
+ module Logglier
5
+ class Client
6
+
7
+ attr_reader :input_uri, :http
8
+
9
+ def initialize(opts={})
10
+ opts = { :input_url => opts } if opts.is_a?(String)
11
+ @input_uri = opts[:input_url]
12
+
13
+ if opts.nil? or opts.empty?
14
+ raise InputURLRequired.new
15
+ end
16
+
17
+ begin
18
+ @input_uri = URI.parse(@input_uri)
19
+ rescue URI::InvalidURIError => e
20
+ raise InputURLRequired.new("Invalid Input URL: #{@input_uri}")
21
+ end
22
+
23
+ @http = Net::HTTP.new(@input_uri.host, @input_uri.port)
24
+ if @input_uri.scheme == 'https'
25
+ @http.use_ssl = true
26
+ @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
27
+ end
28
+
29
+ @http.read_timeout = opts[:read_timeout] || 2
30
+ @http.open_timeout = opts[:open_timeout] || 2
31
+ end
32
+
33
+ # Required by Logger::LogDevice
34
+ def write(message)
35
+ begin
36
+ @http.start { @http.request_post(@input_uri.path, message) }
37
+ rescue TimeoutError => e
38
+ $stderr.puts "WARNING: TimeoutError posting message: #{message}"
39
+ end
40
+ end
41
+
42
+ # Required by Logger::LogDevice
43
+ def close
44
+ nil
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,3 @@
1
+ module Logglier
2
+ VERSION = '0.0.1'
3
+ end
data/lib/logglier.rb ADDED
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), 'logglier', 'client')
2
+
3
+ module Logglier
4
+
5
+ class InputURLRequired < ArgumentError; end
6
+
7
+ def self.new(opts={})
8
+ Logglier::Client.new(opts)
9
+ end
10
+
11
+ end
data/logglier.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ dir = File.dirname(__FILE__)
2
+ require File.expand_path(File.join(dir, 'lib', 'logglier', 'version'))
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "logglier"
6
+ s.version = Logglier::VERSION
7
+ s.date = '2011-02-25'
8
+ s.summary = "Loggly 'plugin' for Logger"
9
+ s.description =<<EOD
10
+ Logger => Loggly
11
+ EOD
12
+
13
+ s.authors = ["Edward Muller (aka freeformz)"]
14
+ s.email =
15
+ s.homepage = "http://loggly.com"
16
+
17
+ s.files = %w{ README.md Gemfile logglier.gemspec Rakefile } + Dir["#{dir}/lib/**/*.rb"]
18
+ s.require_paths = ["lib"]
19
+ s.test_files = Dir["#{dir}/spec/**/*.rb"]
20
+
21
+ s.rubyforge_project = "logglier"
22
+
23
+ s.add_development_dependency 'rake'
24
+ s.add_development_dependency 'rspec', '~> 2.5.0'
25
+ end
26
+
27
+
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ describe Logglier::Client do
4
+
5
+ context "#new" do
6
+
7
+ context "w/o any params" do
8
+
9
+ it "should raise an error" do
10
+ expect { Logglier::Client.new() }.to raise_error Logglier::InputURLRequired
11
+ end
12
+
13
+ end
14
+
15
+ context "a single string param" do
16
+
17
+ context "that is a valid uri" do
18
+
19
+ it "should return and instance of itself" do
20
+ log = Logglier::Client.new('http://localhost')
21
+ log.should be_an_instance_of Logglier::Client
22
+ end
23
+
24
+ end
25
+
26
+ context "that is NOT a valid uri" do
27
+
28
+ it "should raise an error" do
29
+ expect { Logglier::Client.new('f://://://') }.to raise_error Logglier::InputURLRequired
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+
36
+ end
37
+
38
+ context "#write" do
39
+ before do
40
+ @log = Logglier::Client.new('https://localhost')
41
+ @log.http.stub(:start)
42
+ end
43
+
44
+ context "with a message" do
45
+
46
+ it "should start a http call" do
47
+ @log.http.should_receive(:start)
48
+ @log.write('msg')
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,6 @@
1
+ describe Logglier do
2
+
3
+ subject { Logglier.new('https://localhost') }
4
+
5
+ it { should be_an_instance_of Logglier::Client }
6
+ end
@@ -0,0 +1,12 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
2
+
3
+ require 'lib/logglier'
4
+
5
+ RSpec.configure do |config|
6
+ config.color_enabled = config.tty = true
7
+
8
+ config.before(:each) do
9
+ end
10
+
11
+ end
12
+
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logglier
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Edward Muller (aka freeformz)
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-25 00:00:00 -08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rake
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 27
44
+ segments:
45
+ - 2
46
+ - 5
47
+ - 0
48
+ version: 2.5.0
49
+ type: :development
50
+ version_requirements: *id002
51
+ description: |
52
+ Logger => Loggly
53
+
54
+ email: http://loggly.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files: []
60
+
61
+ files:
62
+ - README.md
63
+ - Gemfile
64
+ - logglier.gemspec
65
+ - Rakefile
66
+ - ./lib/logglier.rb
67
+ - ./lib/logglier/client.rb
68
+ - ./lib/logglier/version.rb
69
+ - ./spec/client_spec.rb
70
+ - ./spec/logglier_spec.rb
71
+ - ./spec/spec_helper.rb
72
+ has_rdoc: true
73
+ homepage: http://loggly.com
74
+ licenses: []
75
+
76
+ post_install_message:
77
+ rdoc_options: []
78
+
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ hash: 3
96
+ segments:
97
+ - 0
98
+ version: "0"
99
+ requirements: []
100
+
101
+ rubyforge_project: logglier
102
+ rubygems_version: 1.3.7
103
+ signing_key:
104
+ specification_version: 3
105
+ summary: Loggly 'plugin' for Logger
106
+ test_files:
107
+ - ./spec/client_spec.rb
108
+ - ./spec/logglier_spec.rb
109
+ - ./spec/spec_helper.rb