remote_syslog_logger 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d41ee52d805583b5c45dc0b96f2d8a7c85ff192eefe52b640d926ef21694a899
4
+ data.tar.gz: 1569110d900cc87b345fe27ee1ce8b369ccec493d82f1e878e7e9b750fb1aefa
5
+ SHA512:
6
+ metadata.gz: 44ef27e0b165082ac1950b4a167978c5c1db7adfa6379ed578e3f60c2a2afe76686ed938586c8ab8831a90663ddc62bf19df9d90f9dbdab5d41cb41c4537f724
7
+ data.tar.gz: e69c500ae4c2263320a257e8ca0b397aa32ed4ba904fd0d118cfaaee92165d5ace558108cf8a5fb9f3432c0df4289ad108bc4ed788b9f439acf1799bae41642f
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Remote Syslog Logger
2
2
 
3
- This library providers an [ActiveSupport][] compatible logger that logs
3
+ This library providers an [ActiveSupport][] compatible logger that logs
4
4
  directly to a remote syslogd via UDP.
5
5
 
6
6
  [ActiveSupport]: http://as.rubyonrails.org/
@@ -8,23 +8,39 @@ directly to a remote syslogd via UDP.
8
8
 
9
9
  # Installation
10
10
 
11
- The easiest way to install `remote_syslog_logger` is with RubyGems:
11
+ The easiest way to install `remote_syslog_logger` is with Bundler. Add
12
+ `remote_syslog_logger` to your `Gemfile`.
13
+
14
+ If you are not using a `Gemfile`, run:
12
15
 
13
16
  $ [sudo] gem install remote_syslog_logger
14
17
 
15
18
 
16
19
  # Usage
17
20
 
18
-
19
21
  Use from Rails:
20
22
 
21
- config.logger = RemoteSyslogLogger.new('syslog.domain.com', 514, :program => "rails-#{RAILS_ENV}")
23
+ config.logger = RemoteSyslogLogger.new('syslog.domain.com', 514,
24
+ :program => "rails-#{RAILS_ENV}",
25
+ :local_hostname => "optional_hostname")
26
+
27
+ With Rails 3+ if you want to use tagged logging wrap in a `TaggedLogging` instance:
22
28
 
29
+ config.logger = ActiveSupport::TaggedLogging.new(
30
+ RemoteSyslogLogger.new(
31
+ 'syslog.domain.com', 514,
32
+ :program => "rails-#{RAILS_ENV}",
33
+ :local_hostname => "optional_hostname"
34
+ )
35
+ )
23
36
 
24
37
  Use from Ruby:
25
38
 
39
+ require 'remote_syslog_logger'
26
40
  $logger = RemoteSyslogLogger.new('syslog.domain.com', 514)
27
41
 
42
+ To point the logs to your local system, use `localhost` and ensure that
43
+ the system's syslog daemon is bound to `127.0.0.1`.
28
44
 
29
45
 
30
46
  # Source
@@ -38,6 +54,65 @@ and cloned with:
38
54
  $ git clone git://github.com/papertrail/remote_syslog_logger.git
39
55
 
40
56
 
57
+ # Limitations
58
+
59
+ If the specified host cannot be resolved, `syslog.domain.com` in the
60
+ example under the usage section above, `remote_syslog_logger` will block
61
+ for approximately 20 seconds before displaying an error. This could
62
+ result in the application failing to start or even stopping responding.
63
+
64
+ Workarounds for this include:
65
+
66
+ * use an IP address instead of a hostname.
67
+ * put a hosts entry in `/etc/hosts` or equivalent, so that DNS is not
68
+ actually consulted
69
+ * instead of logging directly to the network, write to a file and
70
+ transmit new entries with a standalone daemon like
71
+ [remote_syslog](https://github.com/papertrail/remote_syslog),
72
+
73
+ ## Message length
74
+
75
+ All log lines are truncated to a maximum of 1024 characters. This restriction
76
+ comes from [RFC 3164 section 4.1][rfc-limit]:
77
+
78
+ > The total length of the packet MUST be 1024 bytes or less.
79
+
80
+ Additionally, the generally-accepted [MTU][] of the Internet is 1500 bytes, so
81
+ regardless of the RFC, UDP syslog packets longer than 1500 bytes would not
82
+ arrive. For details or to use TCP syslog for longer messages, see
83
+ [help.papertrailapp.com][troubleshoot].
84
+
85
+ There is a `max_size` option to override this restriction, but it should only be
86
+ used in extraordinary circumstances. Oversize messages are more likely to be
87
+ fragmented and lost, with some receivers rejecting them entirely.
88
+
89
+ [rfc-limit]: https://tools.ietf.org/html/rfc3164#section-4.1
90
+ [MTU]: (https://en.wikipedia.org/wiki/Maximum_transmission_unit)
91
+ [troubleshoot]: http://help.papertrailapp.com/kb/configuration/troubleshooting-remote-syslog-reachability/#message-length
92
+
93
+
94
+ ## Default program name
95
+
96
+ By default, the `program` value is set to the name and ID of the invoking
97
+ process. For example, `puma[12345]` or `rack[3456]`.
98
+
99
+ The `program` value is used to populate the syslog "tag" field, must be 32
100
+ or fewer characters. In a few cases, an artifact of how the app is launched
101
+ may lead to a default `program` value longer than 32 characters. For example,
102
+ the `thin` Web server may generate a default `program` value such
103
+ as:
104
+
105
+ thin server (0.0.0.0:3001)[11179]
106
+
107
+ If this occurs, the following exception will be raised when a
108
+ `RemoteSyslogLogger` is instantiated:
109
+
110
+ Tag must not be longer than 32 characters (ArgumentError)
111
+
112
+ To remedy this, explicitly provide a `program` argument which is shorter than
113
+ 32 characters. See [Usage](#usage).
114
+
115
+
41
116
  # Contributing
42
117
 
43
118
  Once you've made your great commits:
@@ -54,7 +129,7 @@ on coding standards, new features, etc.
54
129
 
55
130
  # License
56
131
 
57
- Copyright (c) 2011 Eric Lindvall. See [LICENSE][] for details.
132
+ Copyright (c) 2011-2016 Eric Lindvall. See [LICENSE][] for details.
58
133
 
59
134
 
60
135
  [cb]: https://wiki.github.com/defunkt/resque/contributing
data/Rakefile CHANGED
@@ -60,8 +60,8 @@ task :coverage do
60
60
  sh "open coverage/index.html"
61
61
  end
62
62
 
63
- require 'rake/rdoctask'
64
- Rake::RDocTask.new do |rdoc|
63
+ require 'rdoc/task'
64
+ RDoc::Task.new do |rdoc|
65
65
  rdoc.rdoc_dir = 'rdoc'
66
66
  rdoc.title = "#{name} #{version}"
67
67
  rdoc.rdoc_files.include('README*')
@@ -3,9 +3,9 @@ require 'remote_syslog_logger/udp_sender'
3
3
  require 'logger'
4
4
 
5
5
  module RemoteSyslogLogger
6
- VERSION = '1.0.3'
6
+ VERSION = '1.0.4'
7
7
 
8
8
  def self.new(remote_hostname, remote_port, options = {})
9
9
  Logger.new(RemoteSyslogLogger::UdpSender.new(remote_hostname, remote_port, options))
10
10
  end
11
- end
11
+ end
@@ -7,6 +7,7 @@ module RemoteSyslogLogger
7
7
  @remote_hostname = remote_hostname
8
8
  @remote_port = remote_port
9
9
  @whinyerrors = options[:whinyerrors]
10
+ @max_size = options[:max_size]
10
11
 
11
12
  @socket = UDPSocket.new
12
13
  @packet = SyslogProtocol::Packet.new
@@ -26,7 +27,8 @@ module RemoteSyslogLogger
26
27
  next if line =~ /^\s*$/
27
28
  packet = @packet.dup
28
29
  packet.content = line
29
- @socket.send(packet.assemble, 0, @remote_hostname, @remote_port)
30
+ payload = @max_size ? packet.assemble(@max_size) : packet.assemble
31
+ @socket.send(payload, 0, @remote_hostname, @remote_port)
30
32
  rescue
31
33
  $stderr.puts "#{self.class} error: #{$!.class}: #{$!}\nOriginal message: #{line}"
32
34
  raise if @whinyerrors
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'remote_syslog_logger'
16
- s.version = '1.0.3'
17
- s.date = '2011-06-06'
16
+ s.version = '1.0.4'
17
+ s.date = '2018-10-10'
18
18
  # s.rubyforge_project = 'remote_syslog_logger'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -9,4 +9,4 @@ end
9
9
 
10
10
  require 'remote_syslog_logger'
11
11
 
12
- require 'test/unit'
12
+ require 'test/unit'
@@ -11,18 +11,18 @@ class TestRemoteSyslogLogger < Test::Unit::TestCase
11
11
  @logger = RemoteSyslogLogger.new('127.0.0.1', @server_port)
12
12
  @logger.info "This is a test"
13
13
 
14
- message, addr = *@socket.recvfrom(1024)
15
- assert_match /This is a test/, message
14
+ message, _ = *@socket.recvfrom(1024)
15
+ assert_match "This is a test", message
16
16
  end
17
17
 
18
18
  def test_logger_multiline
19
19
  @logger = RemoteSyslogLogger.new('127.0.0.1', @server_port)
20
20
  @logger.info "This is a test\nThis is the second line"
21
21
 
22
- message, addr = *@socket.recvfrom(1024)
23
- assert_match /This is a test/, message
22
+ message, _ = *@socket.recvfrom(1024)
23
+ assert_match "This is a test", message
24
24
 
25
- message, addr = *@socket.recvfrom(1024)
26
- assert_match /This is the second line/, message
25
+ message, _ = *@socket.recvfrom(1024)
26
+ assert_match "This is the second line", message
27
27
  end
28
- end
28
+ end
metadata CHANGED
@@ -1,47 +1,37 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: remote_syslog_logger
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease:
6
- segments:
7
- - 1
8
- - 0
9
- - 3
10
- version: 1.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Eric Lindvall
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-06-06 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
11
+ date: 2018-10-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
22
14
  name: syslog_protocol
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
27
17
  - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
33
20
  type: :runtime
34
- version_requirements: *id001
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
35
27
  description: A ruby Logger that sends UDP directly to a remote syslog endpoint
36
28
  email: eric@5stops.com
37
29
  executables: []
38
-
39
30
  extensions: []
40
-
41
- extra_rdoc_files:
31
+ extra_rdoc_files:
42
32
  - README.md
43
33
  - LICENSE
44
- files:
34
+ files:
45
35
  - Gemfile
46
36
  - LICENSE
47
37
  - README.md
@@ -51,39 +41,29 @@ files:
51
41
  - remote_syslog_logger.gemspec
52
42
  - test/helper.rb
53
43
  - test/test_remote_syslog_logger.rb
54
- has_rdoc: true
55
44
  homepage: https://github.com/papertrail/remote_syslog_logger
56
45
  licenses: []
57
-
46
+ metadata: {}
58
47
  post_install_message:
59
- rdoc_options:
60
- - --charset=UTF-8
61
- require_paths:
48
+ rdoc_options:
49
+ - "--charset=UTF-8"
50
+ require_paths:
62
51
  - lib
63
- required_ruby_version: !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
66
54
  - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
72
- required_rubygems_version: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
75
59
  - - ">="
76
- - !ruby/object:Gem::Version
77
- hash: 3
78
- segments:
79
- - 0
80
- version: "0"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
81
62
  requirements: []
82
-
83
63
  rubyforge_project:
84
- rubygems_version: 1.4.2
64
+ rubygems_version: 2.7.6
85
65
  signing_key:
86
66
  specification_version: 2
87
67
  summary: Ruby Logger that sends directly to a remote syslog endpoint
88
- test_files:
68
+ test_files:
89
69
  - test/test_remote_syslog_logger.rb