logstash-file 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.
- checksums.yaml +15 -0
- data/.gitignore +4 -0
- data/.travis.yml +21 -0
- data/.yardopts +12 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +40 -0
- data/Rakefile +10 -0
- data/doc/css/common.css +69 -0
- data/jenkins.sh +16 -0
- data/lib/logstash-file/logger.rb +64 -0
- data/lib/logstash-file/version.rb +3 -0
- data/lib/logstash-file.rb +5 -0
- data/logstash-file.gemspec +26 -0
- data/logstash.png +0 -0
- data/spec/logstash-file/logger_spec.rb +68 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/support/simplecov.rb +12 -0
- data/task/coverage.rake +6 -0
- data/task/doc.rake +4 -0
- data/task/jenkins.rake +2 -0
- data/task/tag.rake +6 -0
- data/task/test.rake +4 -0
- metadata +180 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Y2MwYzc5MzMxYjE2YjA2M2EwODRmYWQ2MDY4ZDE3MDU5MjQzN2RhYg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MGU2N2UwOGEwOWZiNjE2NzI0MmNlOTA0YmQ5MTk4MjJlMGE3NzU5Yw==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YWRkMzc4YWEzZGQ3YzUwOTBmZjcyMzc4ZTdjMWU2MDNiMTIyMmE4YzVmZWMy
|
10
|
+
MDQxMDQ4NWIyM2RiMmZiZWJkNDBmNzc4YmIxZWFmNzFhM2U5MGRiMzA1ODdk
|
11
|
+
MjMxZDFkYzcwNjI0YTQxYTJhOTE5M2NhYjA1OWU5YmQ5ODQ2M2Q=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
M2UxNGU2YzY0ZTRmNTJmYjUzYzEzMjA1OGYzMTlhNjE5ZmJiNGMzOGM4YzJh
|
14
|
+
OGVmZjA5OWJiYTZmY2M4MTY5NzJlOGIxYzQwN2Q1NTIyMDJjMDIwYmMyNDk1
|
15
|
+
M2M1Njg5M2NjNjg0ZTgwODUxNDE0NTZiYTE5MDIxZjk3OTQxODc=
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
script: rake
|
3
|
+
|
4
|
+
rvm:
|
5
|
+
- 1.9.3
|
6
|
+
- 2.0.0
|
7
|
+
- rbx-head
|
8
|
+
- jruby-19mode
|
9
|
+
- jruby-head
|
10
|
+
|
11
|
+
notifications:
|
12
|
+
email:
|
13
|
+
recipients:
|
14
|
+
- development@olery.com
|
15
|
+
email:
|
16
|
+
on_success: change
|
17
|
+
on_failure: always
|
18
|
+
|
19
|
+
branches:
|
20
|
+
only:
|
21
|
+
- master
|
data/.yardopts
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2013, Olery <http://olery.com>
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Logstash File Logger
|
2
|
+
|
3
|
+
<a href="http://logstash.net/" title="Logstash">
|
4
|
+
<img src="logstash.png" alt="Logstash" align="right">
|
5
|
+
</a>
|
6
|
+
|
7
|
+
The logstash-file Gem is yet another Logstash logger but instead of using a
|
8
|
+
network transporation layer such as TCP or UDP it writes JSON data to a file.
|
9
|
+
|
10
|
+
The LogstashFile::Logger class provides a Logger-like interface by supplying
|
11
|
+
methods such as `info`, `error`, etc. Unlike the Logger API they take a 2nd
|
12
|
+
optional argument that can be used to specify custom fields to set in the
|
13
|
+
logging message. See below for more information.
|
14
|
+
|
15
|
+
## Requirements
|
16
|
+
|
17
|
+
* Ruby 1.9.3 or newer
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
First install the Gem:
|
22
|
+
|
23
|
+
gem install logstash-file
|
24
|
+
|
25
|
+
Basic logging is as following:
|
26
|
+
|
27
|
+
require 'logstash-file'
|
28
|
+
|
29
|
+
logger = LogstashFile::Logger.new(STDOUT)
|
30
|
+
|
31
|
+
logger.info("Hello!") # => {"@fields": {"level": "info"}, "@message": "Hello!", "@timestamp": "..."}
|
32
|
+
|
33
|
+
# Logging using custom fields
|
34
|
+
logger.info("Hello!", :user => "Alice") # => {"@fields": {"user": "Alice", ...}, ...}
|
35
|
+
|
36
|
+
## License
|
37
|
+
|
38
|
+
The source code of this repository and logstash-file itself are licensed under
|
39
|
+
the MIT license unless specified otherwise. A copy of this license can be found
|
40
|
+
in the file "LICENSE" in the root directory of this repository.
|
data/Rakefile
ADDED
data/doc/css/common.css
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
|
2
|
+
body
|
3
|
+
{
|
4
|
+
font-size: 14px;
|
5
|
+
line-height: 1.6;
|
6
|
+
margin: 0 auto;
|
7
|
+
max-width: 960px;
|
8
|
+
}
|
9
|
+
|
10
|
+
p code
|
11
|
+
{
|
12
|
+
background: #f2f2f2;
|
13
|
+
padding-left: 3px;
|
14
|
+
padding-right: 3px;
|
15
|
+
}
|
16
|
+
|
17
|
+
pre.code
|
18
|
+
{
|
19
|
+
font-size: 13px;
|
20
|
+
line-height: 1.4;
|
21
|
+
}
|
22
|
+
|
23
|
+
/**
|
24
|
+
* YARD uses generic table styles, using a special class means those tables
|
25
|
+
* don't get messed up.
|
26
|
+
*/
|
27
|
+
.table
|
28
|
+
{
|
29
|
+
border: 1px solid #ccc;
|
30
|
+
border-right: none;
|
31
|
+
border-collapse: separate;
|
32
|
+
border-spacing: 0;
|
33
|
+
text-align: left;
|
34
|
+
}
|
35
|
+
|
36
|
+
.table.full
|
37
|
+
{
|
38
|
+
width: 100%;
|
39
|
+
}
|
40
|
+
|
41
|
+
.table .field_name
|
42
|
+
{
|
43
|
+
min-width: 160px;
|
44
|
+
}
|
45
|
+
|
46
|
+
.table thead tr th.no_sort:first-child
|
47
|
+
{
|
48
|
+
width: 25px;
|
49
|
+
}
|
50
|
+
|
51
|
+
.table thead tr th, .table tbody tr td
|
52
|
+
{
|
53
|
+
border-bottom: 1px solid #ccc;
|
54
|
+
border-right: 1px solid #ccc;
|
55
|
+
min-width: 20px;
|
56
|
+
padding: 8px 5px;
|
57
|
+
text-align: left;
|
58
|
+
vertical-align: top;
|
59
|
+
}
|
60
|
+
|
61
|
+
.table tbody tr:last-child td
|
62
|
+
{
|
63
|
+
border-bottom: none;
|
64
|
+
}
|
65
|
+
|
66
|
+
.table tr:nth-child(odd) td
|
67
|
+
{
|
68
|
+
background: #f9f9f9;
|
69
|
+
}
|
data/jenkins.sh
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# This configuration file is used to test/build the project on Olery's private
|
2
|
+
# Jenkins instance. Patches containing changes to this file made by people
|
3
|
+
# outside of Olery will most likely be rejected.
|
4
|
+
|
5
|
+
# The name of the project, used for other settings such as the MySQL database
|
6
|
+
# and the package name.
|
7
|
+
PROJECT_NAME="logstash_file"
|
8
|
+
|
9
|
+
# Whether or not to use a MySQL database, set to a non empty value to enable
|
10
|
+
# this. Enabling this will tell Jenkins to create/drop the database and to
|
11
|
+
# import any migrations if needed.
|
12
|
+
unset USE_MYSQL
|
13
|
+
|
14
|
+
# The command to run for the test suite. Junction itself doesn't have a test
|
15
|
+
# suite so we'll use a noop.
|
16
|
+
TEST_COMMAND="rake jenkins --trace"
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module LogstashFile
|
2
|
+
##
|
3
|
+
# The {LogstashFile::Logger} class is a simple Logstash JSON logger with an
|
4
|
+
# API similar to the Logger class provided by the Ruby standard library.
|
5
|
+
#
|
6
|
+
# This logger class internally uses a mutex to synchronize write operations,
|
7
|
+
# thus it should be fine to share an instance of this class between multiple
|
8
|
+
# threads. Having said that, you might experience a performance bottleneck if
|
9
|
+
# you're logging a lot across different threads.
|
10
|
+
#
|
11
|
+
class Logger
|
12
|
+
##
|
13
|
+
# The format used for formatting the times of each log entry.
|
14
|
+
#
|
15
|
+
# @return [String]
|
16
|
+
#
|
17
|
+
TIME_FORMAT = '%Y-%m-%dT%H:%M:%S%z'
|
18
|
+
|
19
|
+
##
|
20
|
+
# @param [String|IO] path Path to the file to write logging data to. You
|
21
|
+
# can also supply an IO object to use.
|
22
|
+
#
|
23
|
+
# @todo Investigate to see if a mutex is really required for write-only
|
24
|
+
# operations.
|
25
|
+
#
|
26
|
+
def initialize(path)
|
27
|
+
@handle = path.respond_to?(:write) ? path : File.open(path, 'a+')
|
28
|
+
@mutex = Mutex.new
|
29
|
+
end
|
30
|
+
|
31
|
+
##
|
32
|
+
# Closes the associated stream.
|
33
|
+
#
|
34
|
+
def close
|
35
|
+
@handle.close
|
36
|
+
end
|
37
|
+
|
38
|
+
[:info, :error, :warning, :debug].each do |level|
|
39
|
+
define_method(level) do |message, fields = {}|
|
40
|
+
log(message, fields.merge(:level => level))
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
##
|
47
|
+
# @param [String] message The message to log.
|
48
|
+
# @param [Hash] fields Extra fields to log.
|
49
|
+
#
|
50
|
+
def log(message, fields = {})
|
51
|
+
time = Time.now.utc.strftime(TIME_FORMAT)
|
52
|
+
entry = {:@timestamp => time, :@fields => fields, :@message => message}
|
53
|
+
|
54
|
+
write(entry)
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# @param [Hash] hash
|
59
|
+
#
|
60
|
+
def write(hash)
|
61
|
+
@mutex.synchronize { @handle.puts(JSON(hash)) }
|
62
|
+
end
|
63
|
+
end # Logger
|
64
|
+
end # LogstashFile
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.expand_path('../lib/logstash-file/version', __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |gem|
|
4
|
+
gem.name = 'logstash-file'
|
5
|
+
gem.version = LogstashFile::VERSION
|
6
|
+
gem.authors = ['Yorick Peterse']
|
7
|
+
gem.summary = 'Simple file based logging for Logstash.'
|
8
|
+
gem.description = gem.summary
|
9
|
+
gem.has_rdoc = 'yard'
|
10
|
+
|
11
|
+
gem.required_ruby_version = '>= 1.9.3'
|
12
|
+
|
13
|
+
gem.files = `git ls-files`.split("\n").sort
|
14
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
15
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
16
|
+
|
17
|
+
gem.add_dependency 'json'
|
18
|
+
|
19
|
+
gem.add_development_dependency 'rake'
|
20
|
+
gem.add_development_dependency 'bundler'
|
21
|
+
gem.add_development_dependency 'rspec'
|
22
|
+
gem.add_development_dependency 'yard'
|
23
|
+
gem.add_development_dependency 'simplecov'
|
24
|
+
gem.add_development_dependency 'kramdown'
|
25
|
+
gem.add_development_dependency 'ci_reporter'
|
26
|
+
end
|
data/logstash.png
ADDED
Binary file
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LogstashFile::Logger do
|
4
|
+
let :buffer do
|
5
|
+
StringIO.new
|
6
|
+
end
|
7
|
+
|
8
|
+
let :logger do
|
9
|
+
LogstashFile::Logger.new(buffer)
|
10
|
+
end
|
11
|
+
|
12
|
+
def read_output(buffer)
|
13
|
+
buffer.rewind
|
14
|
+
|
15
|
+
return JSON(buffer.read.strip)
|
16
|
+
end
|
17
|
+
|
18
|
+
example 'log an info message' do
|
19
|
+
logger.info('info message')
|
20
|
+
|
21
|
+
output = read_output(buffer)
|
22
|
+
|
23
|
+
output['@message'].should == 'info message'
|
24
|
+
output['@fields'].should == {'level' => 'info'}
|
25
|
+
|
26
|
+
output.key?('@timestamp').should == true
|
27
|
+
end
|
28
|
+
|
29
|
+
example 'add custom fields to a log entry' do
|
30
|
+
logger.info('info message', :number => 10)
|
31
|
+
|
32
|
+
output = read_output(buffer)
|
33
|
+
|
34
|
+
output['@fields']['number'].should == 10
|
35
|
+
end
|
36
|
+
|
37
|
+
# Half-assed test to ensure that multiple entries are actually written on
|
38
|
+
# separate lines. It doesn't *actually* test thread-safety though, that's a
|
39
|
+
# pretty difficult thing to test reliably.
|
40
|
+
example 'synchronize multi-threaded operations' do
|
41
|
+
amount = 50
|
42
|
+
threads = []
|
43
|
+
|
44
|
+
amount.times do |n|
|
45
|
+
threads << Thread.new { logger.info("thread #{n}") }
|
46
|
+
end
|
47
|
+
|
48
|
+
threads.each(&:join)
|
49
|
+
|
50
|
+
buffer.rewind
|
51
|
+
|
52
|
+
lines = buffer.read.split("\n")
|
53
|
+
|
54
|
+
lines.length.should == amount
|
55
|
+
end
|
56
|
+
|
57
|
+
example 'create a logger using a filepath' do
|
58
|
+
file = Tempfile.new('logstash-file')
|
59
|
+
logger = LogstashFile::Logger.new(file.path)
|
60
|
+
|
61
|
+
logger.info('testing')
|
62
|
+
logger.close
|
63
|
+
|
64
|
+
output = read_output(file)
|
65
|
+
|
66
|
+
output['@message'].should == 'testing'
|
67
|
+
end
|
68
|
+
end
|
data/spec/spec_helper.rb
ADDED
data/task/coverage.rake
ADDED
data/task/doc.rake
ADDED
data/task/jenkins.rake
ADDED
data/task/tag.rake
ADDED
data/task/test.rake
ADDED
metadata
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: logstash-file
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yorick Peterse
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: json
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ! '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: kramdown
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ! '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: ci_reporter
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: Simple file based logging for Logstash.
|
126
|
+
email:
|
127
|
+
executables: []
|
128
|
+
extensions: []
|
129
|
+
extra_rdoc_files: []
|
130
|
+
files:
|
131
|
+
- .gitignore
|
132
|
+
- .travis.yml
|
133
|
+
- .yardopts
|
134
|
+
- Gemfile
|
135
|
+
- LICENSE
|
136
|
+
- README.md
|
137
|
+
- Rakefile
|
138
|
+
- doc/css/common.css
|
139
|
+
- jenkins.sh
|
140
|
+
- lib/logstash-file.rb
|
141
|
+
- lib/logstash-file/logger.rb
|
142
|
+
- lib/logstash-file/version.rb
|
143
|
+
- logstash-file.gemspec
|
144
|
+
- logstash.png
|
145
|
+
- spec/logstash-file/logger_spec.rb
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- spec/support/simplecov.rb
|
148
|
+
- task/coverage.rake
|
149
|
+
- task/doc.rake
|
150
|
+
- task/jenkins.rake
|
151
|
+
- task/tag.rake
|
152
|
+
- task/test.rake
|
153
|
+
homepage:
|
154
|
+
licenses: []
|
155
|
+
metadata: {}
|
156
|
+
post_install_message:
|
157
|
+
rdoc_options: []
|
158
|
+
require_paths:
|
159
|
+
- lib
|
160
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ! '>='
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 1.9.3
|
165
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ! '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
requirements: []
|
171
|
+
rubyforge_project:
|
172
|
+
rubygems_version: 2.1.2
|
173
|
+
signing_key:
|
174
|
+
specification_version: 4
|
175
|
+
summary: Simple file based logging for Logstash.
|
176
|
+
test_files:
|
177
|
+
- spec/logstash-file/logger_spec.rb
|
178
|
+
- spec/spec_helper.rb
|
179
|
+
- spec/support/simplecov.rb
|
180
|
+
has_rdoc: yard
|