remote_syslog 1.4.2 → 1.5.0
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/README.md +54 -34
- data/examples/log_files.yml.example +6 -1
- data/lib/remote_syslog.rb +1 -1
- data/lib/remote_syslog/cli.rb +13 -7
- data/lib/remote_syslog/tls_endpoint.rb +22 -5
- data/remote_syslog.gemspec +2 -2
- metadata +91 -73
data/README.md
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# remote_syslog Ruby daemon & sender
|
2
2
|
|
3
|
-
Lightweight Ruby daemon to tail one or more log files and transmit UDP syslog
|
3
|
+
Lightweight Ruby daemon to tail one or more log files and transmit UDP syslog
|
4
4
|
messages to a remote syslog host (centralized log aggregation).
|
5
5
|
|
6
|
-
remote_syslog generates UDP packets itself instead of depending on a system
|
7
|
-
syslog daemon, so its configuration doesn't affect system-wide
|
6
|
+
remote_syslog generates UDP packets itself instead of depending on a system
|
7
|
+
syslog daemon, so its configuration doesn't affect system-wide
|
8
8
|
logging - syslog is just the transport.
|
9
9
|
|
10
10
|
Uses:
|
11
11
|
|
12
12
|
* collecting logs from servers & daemons which don't natively support syslog
|
13
|
-
* when reconfiguring the system logger is less convenient than a
|
13
|
+
* when reconfiguring the system logger is less convenient than a
|
14
14
|
purpose-built daemon (e.g., automated app deployments)
|
15
15
|
* aggregating files not generated by daemons (e.g., package manager logs)
|
16
16
|
|
17
17
|
The library can also be used to generate one-off log messages from Ruby code.
|
18
18
|
|
19
|
-
Tested with the hosted log management service [Papertrail] and should work for
|
19
|
+
Tested with the hosted log management service [Papertrail] and should work for
|
20
20
|
transmitting to any syslog server.
|
21
21
|
|
22
22
|
|
@@ -26,19 +26,19 @@ Install the gem, which includes a binary called "remote_syslog":
|
|
26
26
|
|
27
27
|
$ [sudo] gem install remote_syslog
|
28
28
|
|
29
|
-
Optionally, create a log_files.yml with the log file paths to read and the
|
30
|
-
host/port to log to (see examples/[log_files.yml.example][sample config]). These can also be
|
29
|
+
Optionally, create a log_files.yml with the log file paths to read and the
|
30
|
+
host/port to log to (see examples/[log_files.yml.example][sample config]). These can also be
|
31
31
|
specified as command-line arguments (below).
|
32
32
|
|
33
33
|
|
34
34
|
## Usage
|
35
35
|
|
36
36
|
$ remote_syslog -h
|
37
|
-
Usage:
|
37
|
+
Usage: remote_syslog [options] [<logfile>...]
|
38
38
|
|
39
39
|
Example: remote_syslog -c configs/logs.yml -p 12345 /var/log/mysqld.log
|
40
40
|
|
41
|
-
Options
|
41
|
+
Options:
|
42
42
|
-c, --configfile PATH Path to config (/etc/log_files.yml)
|
43
43
|
-d, --dest-host HOSTNAME Destination syslog hostname or IP (logs.papertrailapp.com)
|
44
44
|
-p, --dest-port PORT Destination syslog port (514)
|
@@ -52,7 +52,7 @@ specified as command-line arguments (below).
|
|
52
52
|
--strip-color Strip color codes
|
53
53
|
--tls Connect via TCP with TLS
|
54
54
|
-h, --help Show this message
|
55
|
-
|
55
|
+
|
56
56
|
|
57
57
|
## Example
|
58
58
|
|
@@ -60,7 +60,7 @@ Typical:
|
|
60
60
|
|
61
61
|
$ remote_syslog
|
62
62
|
|
63
|
-
Daemonize and collect messages from files listed in `./config/logs.yml` as
|
63
|
+
Daemonize and collect messages from files listed in `./config/logs.yml` as
|
64
64
|
well as the file `/var/log/mysqld.log`. Send to port `logs.papertrailapp.com:12345`:
|
65
65
|
|
66
66
|
$ remote_syslog -c configs/logs.yml -p 12345 /var/log/mysqld.log
|
@@ -71,7 +71,7 @@ to `a.server.com:514`:
|
|
71
71
|
|
72
72
|
$ remote_syslog -D -d a.server.com -f local0 -P /tmp /var/log/mysqld.log
|
73
73
|
|
74
|
-
remote_syslog will daemonize by default. A sample init file is in the gem as
|
74
|
+
remote_syslog will daemonize by default. A sample init file is in the gem as
|
75
75
|
[remote_syslog.init.d]. You may be able to:
|
76
76
|
|
77
77
|
$ cp examples/remote_syslog.init.d /etc/init.d/remote_syslog
|
@@ -90,21 +90,25 @@ By default, the gem looks for a configuration in /etc/log_files.yml.
|
|
90
90
|
The gem comes with a [sample config]. Optionally:
|
91
91
|
|
92
92
|
$ cp examples/log_files.yml.example /etc/log_files.yml
|
93
|
-
|
94
|
-
log_files.yml has filenames to log from (as an array) and hostname and port
|
95
|
-
to log to (as a hash). Wildcards are supported using * and standard shell
|
96
|
-
globbing. Filenames given on the command line are additive to those in
|
93
|
+
|
94
|
+
log_files.yml has filenames to log from (as an array) and hostname and port
|
95
|
+
to log to (as a hash). Wildcards are supported using * and standard shell
|
96
|
+
globbing. Filenames given on the command line are additive to those in
|
97
97
|
the config file.
|
98
98
|
|
99
|
-
Only 1 destination server is supported; the command-line argument wins.
|
99
|
+
Only 1 destination server is supported; the command-line argument wins.
|
100
100
|
|
101
|
-
files:
|
101
|
+
files:
|
102
|
+
- /var/log/httpd/access_log
|
103
|
+
- /var/log/httpd/error_log
|
104
|
+
- /var/log/mysqld.log
|
105
|
+
- /var/run/mysqld/mysqld-slow.log
|
102
106
|
destination:
|
103
107
|
host: logs.papertrailapp.com
|
104
108
|
port: 12345
|
105
109
|
|
106
|
-
remote_syslog sends the name of the file without a path ("mysqld.log") as
|
107
|
-
the syslog tag (program name). RFCs 3164 and 5424 limit the tag to 32
|
110
|
+
remote_syslog sends the name of the file without a path ("mysqld.log") as
|
111
|
+
the syslog tag (program name). RFCs 3164 and 5424 limit the tag to 32
|
108
112
|
characters. Longer filenames are truncated to 32 characters.
|
109
113
|
|
110
114
|
## Advanced Configuration (Optional)
|
@@ -117,9 +121,24 @@ Provide `--hostname somehostname` or use the `hostname` configuration option:
|
|
117
121
|
|
118
122
|
hostname: somehostname
|
119
123
|
|
124
|
+
### Verify server certificate
|
125
|
+
|
126
|
+
Provide the public key for the remote host when using TLS:
|
127
|
+
|
128
|
+
ssl_server_cert: syslog.crt
|
129
|
+
|
130
|
+
|
131
|
+
### Use a client certificate
|
132
|
+
|
133
|
+
Provide a client certificate when connecting via TLS:
|
134
|
+
|
135
|
+
ssl_client_cert_chain: syslog_client.crt
|
136
|
+
ssl_client_private_key: syslog_client.key
|
137
|
+
|
138
|
+
|
120
139
|
### Multiple instances
|
121
140
|
|
122
|
-
Run multiple instances to support more than one message-specific file format
|
141
|
+
Run multiple instances to support more than one message-specific file format
|
123
142
|
or to specify unique syslog hostnames.
|
124
143
|
|
125
144
|
To do that, provide an alternate PID filename as a command-line option
|
@@ -127,49 +146,50 @@ to the additional instance(s). For example:
|
|
127
146
|
|
128
147
|
--pid-file remote_syslog_2.pid
|
129
148
|
|
149
|
+
|
130
150
|
### Parse fields from log messages
|
131
151
|
|
132
|
-
Rarely needed. Usually only used when remote_syslog is watching files
|
152
|
+
Rarely needed. Usually only used when remote_syslog is watching files
|
133
153
|
generated by syslogd (rather than by apps), like ``/var/log/messages``.
|
134
154
|
|
135
|
-
remote_syslog can parse the program and hostname from the log line. When one
|
136
|
-
file contains logs from multiple programs (like with syslog), the log line
|
137
|
-
may include text that is not part of the log message, like a timestamp,
|
138
|
-
hostname, or program name. remote_syslog will extract those and use them in
|
155
|
+
remote_syslog can parse the program and hostname from the log line. When one
|
156
|
+
file contains logs from multiple programs (like with syslog), the log line
|
157
|
+
may include text that is not part of the log message, like a timestamp,
|
158
|
+
hostname, or program name. remote_syslog will extract those and use them in
|
139
159
|
the corresponding syslog packet fields.
|
140
160
|
|
141
|
-
To do that, use the config file option `parse_fields` with the name of a
|
161
|
+
To do that, use the config file option `parse_fields` with the name of a
|
142
162
|
format supported by remote_syslog, or your own regex. Included format names
|
143
163
|
are `syslog` and `rfc3339`. For example:
|
144
164
|
|
145
165
|
parse_fields: syslog
|
146
166
|
|
147
|
-
The included `syslog` format uses the regex `(\w+ \d+ \S+) (\S+) ([^:]+): (.*)`
|
167
|
+
The included `syslog` format uses the regex `(\w+ \d+ \S+) (\S+) ([^:]+): (.*)`
|
148
168
|
to parse standard syslog lines like this:
|
149
169
|
|
150
170
|
Jul 18 08:25:08 hostname programname[1234]: The log message
|
151
171
|
|
152
|
-
The included `rfc3339` format uses the regex `(\S+) (\S+) ([^: ]+):? (.*)` to
|
172
|
+
The included `rfc3339` format uses the regex `(\S+) (\S+) ([^: ]+):? (.*)` to
|
153
173
|
parse syslog lines with high-precision RFC 3339 timestamps, like this:
|
154
174
|
|
155
175
|
2011-07-16T08:25:08.651413-07:00 hostname programname[1234]: The log message
|
156
176
|
|
157
|
-
To parse a format other than those, provide your own regex. It should include
|
158
|
-
4 backreferences to parse, in order: timestamp, system name, program name,
|
177
|
+
To parse a format other than those, provide your own regex. It should include
|
178
|
+
4 backreferences to parse, in order: timestamp, system name, program name,
|
159
179
|
message.
|
160
180
|
|
161
|
-
Match and return empty strings for any empty positions where the log line
|
181
|
+
Match and return empty strings for any empty positions where the log line
|
162
182
|
doesn't provide a value. For example, given the log message:
|
163
183
|
|
164
184
|
something-meaningless The log message
|
165
185
|
|
166
186
|
One could use a regex to ignore "something-meaningless" (and not to extract
|
167
|
-
a program or hostname). To ignore that prefix and return 3 empty values
|
187
|
+
a program or hostname). To ignore that prefix and return 3 empty values
|
168
188
|
then the log message, use parse_fields with this regex:
|
169
189
|
|
170
190
|
parse_fields: "something-meaningless ()()()(.*)"
|
171
191
|
|
172
|
-
Per-file regexes are not supported. Run multiple instances with different
|
192
|
+
Per-file regexes are not supported. Run multiple instances with different
|
173
193
|
config files.
|
174
194
|
|
175
195
|
|
@@ -1,4 +1,9 @@
|
|
1
|
-
files:
|
1
|
+
files:
|
2
|
+
- /var/log/httpd/access_log
|
3
|
+
- /var/log/httpd/error_log
|
4
|
+
- /opt/misc/*.log
|
5
|
+
- /var/log/mysqld.log
|
6
|
+
- /var/run/mysqld/mysqld-slow.log
|
2
7
|
destination:
|
3
8
|
host: logs.papertrailapp.com
|
4
9
|
port: 12345 # optional, defaults to 514
|
data/lib/remote_syslog.rb
CHANGED
data/lib/remote_syslog/cli.rb
CHANGED
@@ -45,11 +45,11 @@ module RemoteSyslog
|
|
45
45
|
|
46
46
|
def parse
|
47
47
|
op = OptionParser.new do |opts|
|
48
|
-
opts.banner = "Usage:
|
48
|
+
opts.banner = "Usage: remote_syslog [options] [<logfile>...]"
|
49
49
|
opts.separator ''
|
50
50
|
opts.separator "Example: remote_syslog -c configs/logs.yml -p 12345 /var/log/mysqld.log"
|
51
51
|
opts.separator ''
|
52
|
-
opts.separator "Options
|
52
|
+
opts.separator "Options:"
|
53
53
|
|
54
54
|
opts.on("-c", "--configfile PATH", "Path to config (/etc/log_files.yml)") do |v|
|
55
55
|
@configfile = File.expand_path(v)
|
@@ -117,9 +117,7 @@ module RemoteSyslog
|
|
117
117
|
|
118
118
|
def parse_config
|
119
119
|
if File.exist?(@configfile)
|
120
|
-
config =
|
121
|
-
YAML.load(f)
|
122
|
-
end
|
120
|
+
config = YAML.load_file(@configfile)
|
123
121
|
|
124
122
|
@files += Array(config['files'])
|
125
123
|
|
@@ -135,6 +133,10 @@ module RemoteSyslog
|
|
135
133
|
@hostname = config['hostname']
|
136
134
|
end
|
137
135
|
|
136
|
+
@server_cert = config['ssl_server_cert']
|
137
|
+
@client_cert_chain = config['ssl_client_cert_chain']
|
138
|
+
@client_private_key = config['ssl_client_private_key']
|
139
|
+
|
138
140
|
if config['parse_fields']
|
139
141
|
@parse_fields = FIELD_REGEXES[config['parse_fields']] || Regexp.new(config['parse_fields'])
|
140
142
|
end
|
@@ -142,6 +144,8 @@ module RemoteSyslog
|
|
142
144
|
end
|
143
145
|
|
144
146
|
def run
|
147
|
+
puts "Watching #{@files.length} files/paths. Sending to #{@dest_host}:#{@dest_port} (#{@tls ? 'TCP/TLS' : 'UDP'})."
|
148
|
+
|
145
149
|
if @no_detach
|
146
150
|
start
|
147
151
|
else
|
@@ -152,10 +156,12 @@ module RemoteSyslog
|
|
152
156
|
end
|
153
157
|
|
154
158
|
def start
|
155
|
-
puts "Watching #{@files.length} files/paths. Sending to #{@dest_host}:#{@dest_port} (#{@tls ? 'TCP/TLS' : 'UDP'})."
|
156
159
|
EventMachine.run do
|
157
160
|
if @tls
|
158
|
-
connection = TlsEndpoint.new(@dest_host, @dest_port
|
161
|
+
connection = TlsEndpoint.new(@dest_host, @dest_port,
|
162
|
+
:client_cert_chain => @client_cert_chain,
|
163
|
+
:client_private_key => @client_private_key,
|
164
|
+
:server_cert => @server_cert)
|
159
165
|
else
|
160
166
|
connection = UdpEndpoint.new(@dest_host, @dest_port)
|
161
167
|
end
|
@@ -3,12 +3,22 @@ module RemoteSyslog
|
|
3
3
|
class Handler < EventMachine::Connection
|
4
4
|
def initialize(endpoint)
|
5
5
|
@endpoint = endpoint
|
6
|
-
@endpoint.connection = self
|
7
6
|
super()
|
8
7
|
end
|
9
8
|
|
10
9
|
def connection_completed
|
11
|
-
start_tls
|
10
|
+
start_tls(:verify_peer => @endpoint.server_cert != nil,
|
11
|
+
:cert_chain_file => @endpoint.client_cert_chain,
|
12
|
+
:private_key_file => @endpoint.client_private_key)
|
13
|
+
end
|
14
|
+
|
15
|
+
def ssl_verify_peer(peer_cert)
|
16
|
+
peer_cert = OpenSSL::X509::Certificate.new(peer_cert)
|
17
|
+
peer_cert.verify(@endpoint.server_cert.public_key)
|
18
|
+
end
|
19
|
+
|
20
|
+
def ssl_handshake_completed
|
21
|
+
@endpoint.connection = self
|
12
22
|
end
|
13
23
|
|
14
24
|
def unbind
|
@@ -17,10 +27,17 @@ module RemoteSyslog
|
|
17
27
|
end
|
18
28
|
|
19
29
|
attr_accessor :connection
|
30
|
+
attr_reader :server_cert, :client_cert_chain, :client_private_key
|
20
31
|
|
21
|
-
def initialize(address, port)
|
22
|
-
@address
|
23
|
-
@port
|
32
|
+
def initialize(address, port, options = {})
|
33
|
+
@address = address
|
34
|
+
@port = port.to_i
|
35
|
+
@client_cert_chain = options[:client_cert_chain]
|
36
|
+
@client_private_key = options[:client_private_key]
|
37
|
+
|
38
|
+
if options[:server_cert]
|
39
|
+
@server_cert = OpenSSL::X509::Certificate.new(File.read(options[:server_cert]))
|
40
|
+
end
|
24
41
|
|
25
42
|
# Try to resolve the address
|
26
43
|
resolve_address
|
data/remote_syslog.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
|
|
8
8
|
## If your rubyforge_project name is different, then edit it and comment out
|
9
9
|
## the sub! line in the Rakefile
|
10
10
|
s.name = 'remote_syslog'
|
11
|
-
s.version = '1.
|
12
|
-
s.date = '2011-12-
|
11
|
+
s.version = '1.5.0'
|
12
|
+
s.date = '2011-12-30'
|
13
13
|
s.rubyforge_project = 'remote_syslog'
|
14
14
|
|
15
15
|
## Make sure your summary is short. The description may be as long
|
metadata
CHANGED
@@ -1,86 +1,99 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: remote_syslog
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 5
|
8
|
+
- 0
|
9
|
+
version: 1.5.0
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Troy Davis
|
9
13
|
- Eric Lindvall
|
10
14
|
autorequire:
|
11
15
|
bindir: bin
|
12
16
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
17
|
+
|
18
|
+
date: 2011-12-30 00:00:00 -08:00
|
19
|
+
default_executable: remote_syslog
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
16
22
|
name: daemons
|
17
|
-
requirement: &70345349040060 !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ! '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0'
|
23
|
-
type: :runtime
|
24
23
|
prerelease: false
|
25
|
-
|
26
|
-
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
27
34
|
name: eventmachine
|
28
|
-
|
29
|
-
|
30
|
-
requirements:
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
31
38
|
- - ~>
|
32
|
-
- !ruby/object:Gem::Version
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
segments:
|
41
|
+
- 0
|
42
|
+
- 12
|
43
|
+
- 10
|
33
44
|
version: 0.12.10
|
34
45
|
type: :runtime
|
35
|
-
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
version_requirements: *id002
|
47
|
+
- !ruby/object:Gem::Dependency
|
38
48
|
name: eventmachine-tail
|
39
|
-
requirement: &70345349055440 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ! '>='
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version: '0'
|
45
|
-
type: :runtime
|
46
49
|
prerelease: false
|
47
|
-
|
48
|
-
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id003
|
59
|
+
- !ruby/object:Gem::Dependency
|
49
60
|
name: syslog_protocol
|
50
|
-
|
51
|
-
|
52
|
-
requirements:
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
53
64
|
- - ~>
|
54
|
-
- !ruby/object:Gem::Version
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
segments:
|
67
|
+
- 0
|
68
|
+
- 9
|
69
|
+
- 1
|
55
70
|
version: 0.9.1
|
56
71
|
type: :runtime
|
57
|
-
|
58
|
-
|
59
|
-
- !ruby/object:Gem::Dependency
|
72
|
+
version_requirements: *id004
|
73
|
+
- !ruby/object:Gem::Dependency
|
60
74
|
name: em-resolv-replace
|
61
|
-
requirement: &70345349054460 !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
|
-
requirements:
|
64
|
-
- - ! '>='
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
67
|
-
type: :runtime
|
68
75
|
prerelease: false
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
76
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 0
|
82
|
+
version: "0"
|
83
|
+
type: :runtime
|
84
|
+
version_requirements: *id005
|
85
|
+
description: Lightweight daemon to tail one or more log files and transmit UDP syslog messages to a remote syslog host (centralized log aggregation). Generates UDP packets itself instead of depending on a system syslog daemon, so it doesn't affect system-wide logging configuration.
|
86
|
+
email:
|
75
87
|
- troy@sevenscale.com
|
76
88
|
- eric@sevenscale.com
|
77
|
-
executables:
|
89
|
+
executables:
|
78
90
|
- remote_syslog
|
79
91
|
extensions: []
|
80
|
-
|
92
|
+
|
93
|
+
extra_rdoc_files:
|
81
94
|
- README.md
|
82
95
|
- LICENSE
|
83
|
-
files:
|
96
|
+
files:
|
84
97
|
- Gemfile
|
85
98
|
- LICENSE
|
86
99
|
- README.md
|
@@ -96,30 +109,35 @@ files:
|
|
96
109
|
- lib/remote_syslog/tls_endpoint.rb
|
97
110
|
- lib/remote_syslog/udp_endpoint.rb
|
98
111
|
- remote_syslog.gemspec
|
112
|
+
has_rdoc: true
|
99
113
|
homepage: http://github.com/papertrail/remote_syslog
|
100
114
|
licenses: []
|
115
|
+
|
101
116
|
post_install_message:
|
102
|
-
rdoc_options:
|
117
|
+
rdoc_options:
|
103
118
|
- --charset=UTF-8
|
104
|
-
require_paths:
|
119
|
+
require_paths:
|
105
120
|
- lib
|
106
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
requirements:
|
115
|
-
- -
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
|
121
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
segments:
|
133
|
+
- 0
|
134
|
+
version: "0"
|
118
135
|
requirements: []
|
136
|
+
|
119
137
|
rubyforge_project: remote_syslog
|
120
|
-
rubygems_version: 1.
|
138
|
+
rubygems_version: 1.3.6
|
121
139
|
signing_key:
|
122
140
|
specification_version: 2
|
123
|
-
summary: Monitor plain text log file(s) for new entries and send to remote syslog
|
124
|
-
collector
|
141
|
+
summary: Monitor plain text log file(s) for new entries and send to remote syslog collector
|
125
142
|
test_files: []
|
143
|
+
|