logglier 0.1.0 → 0.1.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/lib/logglier/client/http/sync.rb +3 -13
 - data/lib/logglier/client/http/threaded.rb +7 -22
 - data/lib/logglier/client/http.rb +31 -0
 - data/lib/logglier/version.rb +1 -1
 - data/logglier.gemspec +1 -1
 - metadata +23 -4
 
| 
         @@ -6,29 +6,19 @@ module Logglier 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                  class Sync
         
     | 
| 
       8 
8 
     | 
    
         
             
                    include Logglier::Client::InstanceMethods
         
     | 
| 
      
 9 
     | 
    
         
            +
                    include Logglier::Client::HTTP::InstanceMethods
         
     | 
| 
       9 
10 
     | 
    
         | 
| 
       10 
11 
     | 
    
         
             
                    attr_reader :input_uri, :http
         
     | 
| 
       11 
12 
     | 
    
         | 
| 
       12 
13 
     | 
    
         
             
                    def initialize(opts={})
         
     | 
| 
       13 
14 
     | 
    
         
             
                      setup_input_uri(opts)
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                       
     | 
| 
       16 
     | 
    
         
            -
                      if @input_uri.scheme == 'https'
         
     | 
| 
       17 
     | 
    
         
            -
                        @http.use_ssl = true
         
     | 
| 
       18 
     | 
    
         
            -
                        @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
         
     | 
| 
       19 
     | 
    
         
            -
                      end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                      @http.read_timeout = opts[:read_timeout] || 2
         
     | 
| 
       22 
     | 
    
         
            -
                      @http.open_timeout = opts[:open_timeout] || 2
         
     | 
| 
      
 16 
     | 
    
         
            +
                      setup_http(opts)
         
     | 
| 
       23 
17 
     | 
    
         
             
                    end
         
     | 
| 
       24 
18 
     | 
    
         | 
| 
       25 
19 
     | 
    
         
             
                    # Required by Logger::LogDevice
         
     | 
| 
       26 
20 
     | 
    
         
             
                    def write(message)
         
     | 
| 
       27 
     | 
    
         
            -
                       
     | 
| 
       28 
     | 
    
         
            -
                        @http.request_post(@input_uri.path, message)
         
     | 
| 
       29 
     | 
    
         
            -
                      rescue TimeoutError => e
         
     | 
| 
       30 
     | 
    
         
            -
                        $stderr.puts "WARNING: TimeoutError posting message: #{message}"
         
     | 
| 
       31 
     | 
    
         
            -
                      end
         
     | 
| 
      
 21 
     | 
    
         
            +
                      deliver(message)
         
     | 
| 
       32 
22 
     | 
    
         
             
                    end
         
     | 
| 
       33 
23 
     | 
    
         | 
| 
       34 
24 
     | 
    
         
             
                    # Required by Logger::LogDevice
         
     | 
| 
         @@ -11,6 +11,7 @@ module Logglier 
     | 
|
| 
       11 
11 
     | 
    
         
             
                  #
         
     | 
| 
       12 
12 
     | 
    
         
             
                  # Not meant to be used directly.
         
     | 
| 
       13 
13 
     | 
    
         
             
                  class DeliveryThread < Thread
         
     | 
| 
      
 14 
     | 
    
         
            +
                    include Logglier::Client::HTTP::InstanceMethods
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
                    # @param [URI] input_uri The uri to deliver messags to
         
     | 
| 
       16 
17 
     | 
    
         
             
                    # @param [Integer] read_timeout Read timeout for the http session. defaults to 120
         
     | 
| 
         @@ -21,21 +22,16 @@ module Logglier 
     | 
|
| 
       21 
22 
     | 
    
         | 
| 
       22 
23 
     | 
    
         
             
                      @input_uri = input_uri
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
       24 
     | 
    
         
            -
                       
     | 
| 
       25 
     | 
    
         
            -
                      if @input_uri.scheme == 'https'
         
     | 
| 
       26 
     | 
    
         
            -
                        @http.use_ssl = true
         
     | 
| 
       27 
     | 
    
         
            -
                        @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
         
     | 
| 
       28 
     | 
    
         
            -
                      end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                      @http.read_timeout = read_timeout
         
     | 
| 
       31 
     | 
    
         
            -
                      @http.open_timeout = open_timeout
         
     | 
| 
      
 25 
     | 
    
         
            +
                      setup_http( {:read_timeout => read_timeout, :open_timeout => open_timeout} )
         
     | 
| 
       32 
26 
     | 
    
         | 
| 
       33 
27 
     | 
    
         
             
                      @queue = Queue.new
         
     | 
| 
       34 
28 
     | 
    
         
             
                      @exiting = false
         
     | 
| 
       35 
29 
     | 
    
         | 
| 
       36 
30 
     | 
    
         
             
                      super do
         
     | 
| 
       37 
     | 
    
         
            -
                         
     | 
| 
       38 
     | 
    
         
            -
                           
     | 
| 
      
 31 
     | 
    
         
            +
                        loop do
         
     | 
| 
      
 32 
     | 
    
         
            +
                          msg = @queue.pop
         
     | 
| 
      
 33 
     | 
    
         
            +
                          break if msg == :__delivery_thread_exit_signal__
         
     | 
| 
      
 34 
     | 
    
         
            +
                          deliver(msg)
         
     | 
| 
       39 
35 
     | 
    
         
             
                        end
         
     | 
| 
       40 
36 
     | 
    
         
             
                      end
         
     | 
| 
       41 
37 
     | 
    
         | 
| 
         @@ -48,18 +44,7 @@ module Logglier 
     | 
|
| 
       48 
44 
     | 
    
         
             
                    # Signals the queue that we're exiting
         
     | 
| 
       49 
45 
     | 
    
         
             
                    def exit!
         
     | 
| 
       50 
46 
     | 
    
         
             
                      @exiting = true
         
     | 
| 
       51 
     | 
    
         
            -
                      @queue.push 
     | 
| 
       52 
     | 
    
         
            -
                    end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                    # Delivers individual messages via http
         
     | 
| 
       55 
     | 
    
         
            -
                    def deliver(message)
         
     | 
| 
       56 
     | 
    
         
            -
                      unless message == :__delivery_thread_exit_signal__
         
     | 
| 
       57 
     | 
    
         
            -
                        begin
         
     | 
| 
       58 
     | 
    
         
            -
                          @http.request_post(@input_uri.path, message)
         
     | 
| 
       59 
     | 
    
         
            -
                        rescue TimeoutError => e
         
     | 
| 
       60 
     | 
    
         
            -
                          $stderr.puts "WARNING: TimeoutError posting message: #{message}"
         
     | 
| 
       61 
     | 
    
         
            -
                        end
         
     | 
| 
       62 
     | 
    
         
            -
                      end
         
     | 
| 
      
 47 
     | 
    
         
            +
                      @queue.push :__delivery_thread_exit_signal__
         
     | 
| 
       63 
48 
     | 
    
         
             
                    end
         
     | 
| 
       64 
49 
     | 
    
         | 
| 
       65 
50 
     | 
    
         
             
                    # Pushes a message onto the internal queue
         
     | 
    
        data/lib/logglier/client/http.rb
    CHANGED
    
    | 
         @@ -13,6 +13,37 @@ module Logglier 
     | 
|
| 
       13 
13 
     | 
    
         
             
                    end
         
     | 
| 
       14 
14 
     | 
    
         
             
                  end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
      
 16 
     | 
    
         
            +
                  module InstanceMethods
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    # Sets up @http 
         
     | 
| 
      
 19 
     | 
    
         
            +
                    #
         
     | 
| 
      
 20 
     | 
    
         
            +
                    # @param [Hash] opts The options Hash
         
     | 
| 
      
 21 
     | 
    
         
            +
                    # @option opts [String] :read_timeout The read timeout for the http connection
         
     | 
| 
      
 22 
     | 
    
         
            +
                    # @option opts [String] :open_timeout The open timeout for the http connection
         
     | 
| 
      
 23 
     | 
    
         
            +
                    def setup_http(opts={})
         
     | 
| 
      
 24 
     | 
    
         
            +
                      @http = Net::HTTP.new(@input_uri.host, @input_uri.port)
         
     | 
| 
      
 25 
     | 
    
         
            +
                      if @input_uri.scheme == 'https'
         
     | 
| 
      
 26 
     | 
    
         
            +
                        @http.use_ssl = true
         
     | 
| 
      
 27 
     | 
    
         
            +
                        @http.verify_mode = OpenSSL::SSL::VERIFY_NONE
         
     | 
| 
      
 28 
     | 
    
         
            +
                      end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                      @http.read_timeout = opts[:read_timeout] || 2
         
     | 
| 
      
 31 
     | 
    
         
            +
                      @http.open_timeout = opts[:open_timeout] || 2
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                    # Delivers the message via HTTP, handling errors
         
     | 
| 
      
 35 
     | 
    
         
            +
                    #
         
     | 
| 
      
 36 
     | 
    
         
            +
                    # @param [String] message The message to deliver
         
     | 
| 
      
 37 
     | 
    
         
            +
                    def deliver(message)
         
     | 
| 
      
 38 
     | 
    
         
            +
                      begin
         
     | 
| 
      
 39 
     | 
    
         
            +
                        @http.request_post(@input_uri.path, message)
         
     | 
| 
      
 40 
     | 
    
         
            +
                      rescue TimeoutError, OpenSSL::SSL::SSLError, EOFError, Errno::ECONNRESET => e
         
     | 
| 
      
 41 
     | 
    
         
            +
                        $stderr.puts "WARNING: #{e.class} posting message: #{message}"
         
     | 
| 
      
 42 
     | 
    
         
            +
                      end
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       16 
47 
     | 
    
         
             
                end
         
     | 
| 
       17 
48 
     | 
    
         
             
              end
         
     | 
| 
       18 
49 
     | 
    
         
             
            end
         
     | 
    
        data/lib/logglier/version.rb
    CHANGED
    
    
    
        data/logglier.gemspec
    CHANGED
    
    | 
         @@ -12,7 +12,7 @@ EOD 
     | 
|
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
              s.authors           = ["Edward Muller (aka freeformz)"]
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email             = "edwardam@interlix.com"
         
     | 
| 
       15 
     | 
    
         
            -
              s.homepage          = "http:// 
     | 
| 
      
 15 
     | 
    
         
            +
              s.homepage          = "http://github.com/freeformz/logglier"
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
              s.files             = %w{ README.md Gemfile LICENSE logglier.gemspec Rakefile } + Dir["#{dir}/lib/**/*.rb"]
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.require_paths     = ["lib"]
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,8 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: logglier
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 25
         
     | 
| 
       4 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
      
 6 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 9 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.1.1
         
     | 
| 
       6 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       8 
13 
     | 
    
         
             
            - Edward Muller (aka freeformz)
         
     | 
| 
         @@ -10,7 +15,7 @@ autorequire: 
     | 
|
| 
       10 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
17 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
            date: 2011-05- 
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-05-11 00:00:00 -07:00
         
     | 
| 
       14 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       15 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       16 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
         @@ -21,6 +26,9 @@ dependencies: 
     | 
|
| 
       21 
26 
     | 
    
         
             
                requirements: 
         
     | 
| 
       22 
27 
     | 
    
         
             
                - - ">="
         
     | 
| 
       23 
28 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 29 
     | 
    
         
            +
                    hash: 3
         
     | 
| 
      
 30 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 31 
     | 
    
         
            +
                    - 0
         
     | 
| 
       24 
32 
     | 
    
         
             
                    version: "0"
         
     | 
| 
       25 
33 
     | 
    
         
             
              type: :development
         
     | 
| 
       26 
34 
     | 
    
         
             
              version_requirements: *id001
         
     | 
| 
         @@ -32,6 +40,11 @@ dependencies: 
     | 
|
| 
       32 
40 
     | 
    
         
             
                requirements: 
         
     | 
| 
       33 
41 
     | 
    
         
             
                - - ~>
         
     | 
| 
       34 
42 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 43 
     | 
    
         
            +
                    hash: 27
         
     | 
| 
      
 44 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 45 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 46 
     | 
    
         
            +
                    - 5
         
     | 
| 
      
 47 
     | 
    
         
            +
                    - 0
         
     | 
| 
       35 
48 
     | 
    
         
             
                    version: 2.5.0
         
     | 
| 
       36 
49 
     | 
    
         
             
              type: :development
         
     | 
| 
       37 
50 
     | 
    
         
             
              version_requirements: *id002
         
     | 
| 
         @@ -63,7 +76,7 @@ files: 
     | 
|
| 
       63 
76 
     | 
    
         
             
            - ./spec/spec_helper.rb
         
     | 
| 
       64 
77 
     | 
    
         
             
            - ./spec/threaded_spec.rb
         
     | 
| 
       65 
78 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       66 
     | 
    
         
            -
            homepage: http:// 
     | 
| 
      
 79 
     | 
    
         
            +
            homepage: http://github.com/freeformz/logglier
         
     | 
| 
       67 
80 
     | 
    
         
             
            licenses: []
         
     | 
| 
       68 
81 
     | 
    
         | 
| 
       69 
82 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
         @@ -76,17 +89,23 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       76 
89 
     | 
    
         
             
              requirements: 
         
     | 
| 
       77 
90 
     | 
    
         
             
              - - ">="
         
     | 
| 
       78 
91 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 92 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 93 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 94 
     | 
    
         
            +
                  - 0
         
     | 
| 
       79 
95 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       80 
96 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       81 
97 
     | 
    
         
             
              none: false
         
     | 
| 
       82 
98 
     | 
    
         
             
              requirements: 
         
     | 
| 
       83 
99 
     | 
    
         
             
              - - ">="
         
     | 
| 
       84 
100 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 101 
     | 
    
         
            +
                  hash: 3
         
     | 
| 
      
 102 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 103 
     | 
    
         
            +
                  - 0
         
     | 
| 
       85 
104 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       86 
105 
     | 
    
         
             
            requirements: []
         
     | 
| 
       87 
106 
     | 
    
         | 
| 
       88 
107 
     | 
    
         
             
            rubyforge_project: logglier
         
     | 
| 
       89 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 108 
     | 
    
         
            +
            rubygems_version: 1.5.2
         
     | 
| 
       90 
109 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       91 
110 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       92 
111 
     | 
    
         
             
            summary: Loggly 'plugin' for Logger
         
     |