logging-journald 1.0.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.
- checksums.yaml +7 -0
- data/.gitignore +7 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +11 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +38 -0
- data/LICENSE +22 -0
- data/README.md +89 -0
- data/Rakefile +10 -0
- data/examples/simple.rb +31 -0
- data/lib/logging/appenders/journald.rb +95 -0
- data/lib/logging/layouts/noop.rb +13 -0
- data/lib/logging/plugins/journald.rb +14 -0
- data/logging-journald.gemspec +28 -0
- data/test/test_appenders.rb +125 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ad48095f0f3c6a845ce0d02b237d930fa6cf7f7e
|
4
|
+
data.tar.gz: 5c0e263ef33b5ef0f1424ca188ac37af33ff7323
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f677953b81185870ca3ca2559a49eb12227f4e6f769baf6bc4aa212b0188bf1117cbbd8ebf45eb744703b282a452b682bd6db922900411558801a337b32c5100
|
7
|
+
data.tar.gz: 67c8a31e1470e1987dba165b9deafecc29b2f797f6d1e3fb90c0e41646677097f8f8da3be38d7d864b4ead4d8cd4dd86f1ad9e7154e3097a3b25d6c02eb87a39
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
logging-journald (1.0.0)
|
5
|
+
journald-logger
|
6
|
+
logging
|
7
|
+
|
8
|
+
GEM
|
9
|
+
remote: https://rubygems.org/
|
10
|
+
specs:
|
11
|
+
journald-logger (2.0.3)
|
12
|
+
journald-native (~> 1.0)
|
13
|
+
journald-native (1.0.9)
|
14
|
+
little-plugger (1.1.4)
|
15
|
+
logging (2.2.2)
|
16
|
+
little-plugger (~> 1.1)
|
17
|
+
multi_json (~> 1.10)
|
18
|
+
metaclass (0.0.4)
|
19
|
+
mocha (1.3.0)
|
20
|
+
metaclass (~> 0.0.1)
|
21
|
+
multi_json (1.13.1)
|
22
|
+
power_assert (1.1.1)
|
23
|
+
rake (12.3.0)
|
24
|
+
test-unit (3.2.7)
|
25
|
+
power_assert
|
26
|
+
|
27
|
+
PLATFORMS
|
28
|
+
ruby
|
29
|
+
|
30
|
+
DEPENDENCIES
|
31
|
+
bundler
|
32
|
+
logging-journald!
|
33
|
+
mocha
|
34
|
+
rake
|
35
|
+
test-unit
|
36
|
+
|
37
|
+
BUNDLED WITH
|
38
|
+
1.15.3
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
The MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2007-2016 Tim Pease
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
'Software'), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
## Logging Journald
|
2
|
+
by Lukas Zapletal [](https://travis-ci.org/lzap/logging-journald)
|
3
|
+
|
4
|
+
* [Homepage](http://rubygems.org/gems/logging-journald)
|
5
|
+
* [Github Project](https://github.com/lzap/logging-journald)
|
6
|
+
|
7
|
+
### Description
|
8
|
+
|
9
|
+
**Logging Journald** is a plugin for [logging gem](https://github.com/TwP/logging) - the flexible logging library for use in Ruby programs. It supports logging to system journal via journald-logger and journald-native gems.
|
10
|
+
|
11
|
+
### Installation
|
12
|
+
|
13
|
+
```
|
14
|
+
gem install logging-journald
|
15
|
+
```
|
16
|
+
|
17
|
+
The gem provides journald appender and noop layout that does no formatting since core library does not provide such a layout. Apppender options are:
|
18
|
+
|
19
|
+
* name - name of the appender (required)
|
20
|
+
* ident - optional log ident (appender name by default)
|
21
|
+
* layout - optional layout (no formatting by default)
|
22
|
+
* mdc - log mdc into custom journal fields (true by default)
|
23
|
+
* ndc - log ndc hash values into custom journal fields (true by default)
|
24
|
+
* facility - optional syslog facility rendered as SYSLOG_FACILITY (LOG_USER (8) by default)
|
25
|
+
* extra - extra custom journal fields as hash
|
26
|
+
|
27
|
+
All custom fields are converted to uppercase by joudnald automatically, for more details [visit official documentation](https://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html).
|
28
|
+
|
29
|
+
### Examples
|
30
|
+
|
31
|
+
Use MDC to send arbitrary key/value pairs to system journal:
|
32
|
+
|
33
|
+
```ruby
|
34
|
+
require 'logging'
|
35
|
+
|
36
|
+
log = Logging.logger['app']
|
37
|
+
log.add_appenders(Logging.appenders.journald('myservice'))
|
38
|
+
|
39
|
+
# use mapped diagnostic context to send custom fields
|
40
|
+
Logging.mdc['signed_user'] = 'Ondra'
|
41
|
+
logger.debug "blah blah"
|
42
|
+
```
|
43
|
+
|
44
|
+
The example above will be rendered as:
|
45
|
+
|
46
|
+
```
|
47
|
+
# journalctl -o verbose
|
48
|
+
MESSAGE=blah blah
|
49
|
+
SYSLOG_FACILITY=8
|
50
|
+
SIGNED_USER=Ondra
|
51
|
+
PRIORITY=2
|
52
|
+
SYSLOG_IDENTIFIER=myapp
|
53
|
+
_PID=25979
|
54
|
+
_TRANSPORT=journal
|
55
|
+
_UID=1000
|
56
|
+
_GID=1000
|
57
|
+
_MACHINE_ID=xxx
|
58
|
+
_HOSTNAME=xxx
|
59
|
+
_BOOT_ID=xxx
|
60
|
+
...
|
61
|
+
```
|
62
|
+
|
63
|
+
Mapped diagnostic contexts are great for global values like logged user, request or session id. There are two more options to send arbitrary key/value pairs:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
require 'logging'
|
67
|
+
|
68
|
+
log = Logging.logger['app']
|
69
|
+
log.add_appenders(Logging.appenders.journald('myservice'))
|
70
|
+
|
71
|
+
# nested diagnostic context is a stack of values and
|
72
|
+
# it can be used but only hashes are taken into account
|
73
|
+
begin
|
74
|
+
Logging.ndc << { exception: err, backtrace: err.backtrace }
|
75
|
+
log.fatal "an exception occured"
|
76
|
+
ensure
|
77
|
+
Logging.ndc.clear
|
78
|
+
end
|
79
|
+
|
80
|
+
# hash can be provided instead of string but in this case
|
81
|
+
# layout cannot be used to format message in the system journal
|
82
|
+
log.info message: "this must be called 'message'", akey: "a value"
|
83
|
+
```
|
84
|
+
|
85
|
+
There are some examples in the [examples folder](/examples).
|
86
|
+
|
87
|
+
### License
|
88
|
+
|
89
|
+
The MIT License - see the [LICENSE](/LICENSE) file for the full text.
|
data/Rakefile
ADDED
data/examples/simple.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'logging'
|
2
|
+
|
3
|
+
log = Logging.logger['example']
|
4
|
+
log.add_appenders(Logging.appenders.journald('simple',
|
5
|
+
ident: 'simple', # optional log ident (appender name by default)
|
6
|
+
layout: Logging.layouts.pattern(pattern: "%m\n"), # optional layout
|
7
|
+
mdc: true, # log mdc into custom journal fields (true by default)
|
8
|
+
ndc: true, # log ndc hash values into custom journal fields (true by default)
|
9
|
+
facility: ::Syslog::Constants::LOG_USER, # optional syslog facility
|
10
|
+
extra: {}, # extra custom journal fields
|
11
|
+
))
|
12
|
+
log.add_appenders(Logging.appenders.stdout)
|
13
|
+
log.level = :debug
|
14
|
+
|
15
|
+
# mapped diagnostic context is logged when mdc is set to true
|
16
|
+
Logging.mdc['USERNAME'] = 'Ondra'
|
17
|
+
|
18
|
+
# logging into journal is straight-forward
|
19
|
+
log.debug "this is debug message"
|
20
|
+
log.info "a very nice little info message"
|
21
|
+
log.warn "this is your last warning"
|
22
|
+
|
23
|
+
# hash instead string is supported with arbitrary key/value pairs but
|
24
|
+
# layout is ignored in this case
|
25
|
+
log.error message: "oh no an error", akey: "a value"
|
26
|
+
|
27
|
+
# when ndc is enabled, any number of hash objects can be pushed
|
28
|
+
# and will be logged with the message
|
29
|
+
Logging.ndc << { akey: "a value" }
|
30
|
+
log.fatal "an exception occured"
|
31
|
+
Logging.ndc.clear
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'journald/logger'
|
2
|
+
|
3
|
+
module Logging
|
4
|
+
module Appenders
|
5
|
+
|
6
|
+
def self.journald(name, *args)
|
7
|
+
if args.empty?
|
8
|
+
return self['journald'] || ::Logging::Appenders::Journald.new(name)
|
9
|
+
end
|
10
|
+
::Logging::Appenders::Journald.new(name, *args)
|
11
|
+
end
|
12
|
+
|
13
|
+
class Journald < ::Logging::Appender
|
14
|
+
attr_reader :ident, :mdc, :ndc, :facility, :extra, :journal
|
15
|
+
|
16
|
+
def initialize(name, opts = {})
|
17
|
+
opts[:layout] ||= ::Logging::Layouts::Noop.new
|
18
|
+
@ident = opts.fetch(:ident, name)
|
19
|
+
@mdc = opts.fetch(:mdc, true)
|
20
|
+
@ndc = opts.fetch(:ndc, true)
|
21
|
+
@facility = Integer(opts.fetch(:facility, -1))
|
22
|
+
@extra = opts.fetch(:extra, {})
|
23
|
+
@logger_name = opts.fetch(:logger_name, false)
|
24
|
+
@map = [
|
25
|
+
::Journald::LOG_DEBUG,
|
26
|
+
::Journald::LOG_INFO,
|
27
|
+
::Journald::LOG_WARNING,
|
28
|
+
::Journald::LOG_ERR,
|
29
|
+
::Journald::LOG_CRIT
|
30
|
+
]
|
31
|
+
map = opts.fetch(:map, nil)
|
32
|
+
self.map = map unless map.nil?
|
33
|
+
@journal = ::Journald::Logger.new(ident, ::Journald::LOG_DEBUG)
|
34
|
+
#@journal.sev_threshold = ::Journald::LOG_DEBUG
|
35
|
+
super(name, opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
def map=(levels)
|
39
|
+
map = []
|
40
|
+
levels.keys.each do |lvl|
|
41
|
+
num = ::Logging.level_num(lvl)
|
42
|
+
map[num] = syslog_level_num(levels[lvl])
|
43
|
+
end
|
44
|
+
@map = map
|
45
|
+
end
|
46
|
+
|
47
|
+
def close(*args)
|
48
|
+
super(false)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def syslog_level_num(level)
|
54
|
+
case level
|
55
|
+
when Integer; level
|
56
|
+
when String, Symbol
|
57
|
+
level = level.to_s.upcase
|
58
|
+
self.class.const_get level
|
59
|
+
else
|
60
|
+
raise ArgumentError, "unknown level '#{level}'"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def write(event)
|
65
|
+
record = {}
|
66
|
+
record.merge!(extra) unless extra.empty?
|
67
|
+
record[:SYSLOG_FACILITY] = @facility if @facility >= 0
|
68
|
+
record.merge!(Logging.mdc.context) if mdc
|
69
|
+
if ndc
|
70
|
+
Logging.ndc.context.each do |item|
|
71
|
+
record.merge!(item) if item.instance_of?(Hash)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
if event.instance_of?(::Logging::LogEvent)
|
75
|
+
record[:priority] = (@map[event.level] || ::Journald::LOG_DEBUG)
|
76
|
+
record[@logger_name] = event.logger if @logger_name
|
77
|
+
if event.data.instance_of?(Hash)
|
78
|
+
record.merge!(event.data)
|
79
|
+
else
|
80
|
+
record[:message] = @layout.format(event)
|
81
|
+
end
|
82
|
+
else
|
83
|
+
record[:message] = event
|
84
|
+
end
|
85
|
+
@journal.send(record)
|
86
|
+
self
|
87
|
+
rescue StandardError => err
|
88
|
+
self.level = :off
|
89
|
+
::Logging.log_internal 'system journal appender have been disabled'
|
90
|
+
::Logging.log_internal_error(err)
|
91
|
+
raise(err)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Logging
|
2
|
+
module Plugins
|
3
|
+
module Journald
|
4
|
+
extend self
|
5
|
+
|
6
|
+
VERSION ||= '1.0.0'.freeze
|
7
|
+
|
8
|
+
def initialize_journald
|
9
|
+
require File.expand_path('../../layouts/noop', __FILE__)
|
10
|
+
require File.expand_path('../../appenders/journald', __FILE__)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'logging/plugins/journald'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'logging-journald'
|
7
|
+
spec.version = Logging::Plugins::Journald::VERSION
|
8
|
+
spec.authors = ['Lukas Zapletal']
|
9
|
+
spec.email = ['lukas-x@zapletalovi.com']
|
10
|
+
spec.summary = "Journald appender for logging gem"
|
11
|
+
spec.description = "Plugin for logging gem providing journald appender"
|
12
|
+
spec.homepage = 'https://github.com/lzap/logging-journald'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0")
|
16
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
+
spec.require_paths = ['lib']
|
18
|
+
|
19
|
+
spec.required_ruby_version = '>= 2.1.0'
|
20
|
+
|
21
|
+
spec.add_runtime_dependency 'journald-logger'
|
22
|
+
spec.add_runtime_dependency 'logging'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler'
|
25
|
+
spec.add_development_dependency 'mocha'
|
26
|
+
spec.add_development_dependency 'rake'
|
27
|
+
spec.add_development_dependency 'test-unit'
|
28
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
require 'logging'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'mocha/test_unit'
|
4
|
+
|
5
|
+
Logging.initialize_plugins
|
6
|
+
|
7
|
+
module TestLogging
|
8
|
+
module TestAppenders
|
9
|
+
DEBUG = ::Journald::LOG_DEBUG
|
10
|
+
INFO = ::Journald::LOG_INFO
|
11
|
+
WARN = ::Journald::LOG_WARNING
|
12
|
+
ERR = ::Journald::LOG_ERR
|
13
|
+
CRIT = ::Journald::LOG_CRIT
|
14
|
+
|
15
|
+
class TestJournald < Test::Unit::TestCase
|
16
|
+
def setup
|
17
|
+
@log = Logging.logger['test']
|
18
|
+
@log.clear_appenders
|
19
|
+
@log.level = :debug
|
20
|
+
end
|
21
|
+
|
22
|
+
def setup_appender(*args)
|
23
|
+
@appender = Logging.appenders.journald('simple', *args)
|
24
|
+
@log.add_appenders(@appender)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_initialize
|
28
|
+
setup_appender
|
29
|
+
assert_equal "test", @log.name
|
30
|
+
assert_equal 1, @log.appenders.size
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_simple_debug_line
|
34
|
+
setup_appender
|
35
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: DEBUG)).once.returns(true)
|
36
|
+
@log.debug "test"
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_simple_debug_line_with_facility
|
40
|
+
setup_appender facility: 10
|
41
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", SYSLOG_FACILITY: 10, priority: DEBUG)).once.returns(true)
|
42
|
+
@log.debug "test"
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_simple_debug_line_with_logger
|
46
|
+
setup_appender logger_name: :lg
|
47
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", lg: 'test', priority: DEBUG)).once.returns(true)
|
48
|
+
@log.debug "test"
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_simple_debug_line_level_info
|
52
|
+
setup_appender
|
53
|
+
@log.level = :info
|
54
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: DEBUG)).never.returns(true)
|
55
|
+
@log.debug "test"
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_simple_info_line
|
59
|
+
setup_appender
|
60
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: INFO)).once.returns(true)
|
61
|
+
@log.info "test"
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_simple_warning_line
|
65
|
+
setup_appender
|
66
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: WARN)).once.returns(true)
|
67
|
+
@log.warn "test"
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_simple_error_line
|
71
|
+
setup_appender
|
72
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: ERR)).once.returns(true)
|
73
|
+
@log.error "test"
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_simple_fatal_line
|
77
|
+
setup_appender
|
78
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: CRIT)).once.returns(true)
|
79
|
+
@log.fatal "test"
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_simple_debug_line_as_hash
|
83
|
+
setup_appender
|
84
|
+
@appender.journal.expects(:send).with(has_entries("message" => "test", priority: DEBUG)).once.returns(true)
|
85
|
+
@log.debug "message" => "test"
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_simple_debug_line_as_hash_with_layout
|
89
|
+
setup_appender(layout: Logging.layouts.pattern(pattern: "X %m X"))
|
90
|
+
@appender.journal.expects(:send).with(has_entries("message" => "test", priority: DEBUG)).once.returns(true)
|
91
|
+
@log.debug "message" => "test"
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_simple_info_line_with_mdc
|
95
|
+
setup_appender
|
96
|
+
Logging.mdc['test'] = 'value'
|
97
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: INFO, "test" => "value")).once.returns(true)
|
98
|
+
@log.info "test"
|
99
|
+
ensure
|
100
|
+
Logging.mdc.clear
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_simple_info_line_with_ndc
|
104
|
+
setup_appender
|
105
|
+
Logging.ndc << { test: "value" }
|
106
|
+
@appender.journal.expects(:send).with(has_entries(message: "test", priority: INFO, test: "value")).once.returns(true)
|
107
|
+
@log.info "test"
|
108
|
+
ensure
|
109
|
+
Logging.ndc.clear
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_simple_info_line_with_layout_mdc_ndc
|
113
|
+
setup_appender(layout: Logging.layouts.pattern(pattern: "%m %X{test1} %x"))
|
114
|
+
Logging.mdc['test1'] = 'value'
|
115
|
+
Logging.ndc << { "test2" => "value" }
|
116
|
+
@appender.journal.expects(:send).with(has_entries(message: "test value {\"test2\"=>\"value\"}", priority: INFO, "test1" => "value", "test2" => "value")).once.returns(true)
|
117
|
+
@log.info "test"
|
118
|
+
ensure
|
119
|
+
Logging.mdc.clear
|
120
|
+
Logging.ndc.clear
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: logging-journald
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Lukas Zapletal
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-02-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: journald-logger
|
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: logging
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
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: mocha
|
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: rake
|
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: test-unit
|
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
|
+
description: Plugin for logging gem providing journald appender
|
98
|
+
email:
|
99
|
+
- lukas-x@zapletalovi.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rubocop.yml"
|
106
|
+
- ".travis.yml"
|
107
|
+
- Gemfile
|
108
|
+
- Gemfile.lock
|
109
|
+
- LICENSE
|
110
|
+
- README.md
|
111
|
+
- Rakefile
|
112
|
+
- examples/simple.rb
|
113
|
+
- lib/logging/appenders/journald.rb
|
114
|
+
- lib/logging/layouts/noop.rb
|
115
|
+
- lib/logging/plugins/journald.rb
|
116
|
+
- logging-journald.gemspec
|
117
|
+
- test/test_appenders.rb
|
118
|
+
homepage: https://github.com/lzap/logging-journald
|
119
|
+
licenses:
|
120
|
+
- MIT
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 2.1.0
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.6.11
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: Journald appender for logging gem
|
142
|
+
test_files:
|
143
|
+
- test/test_appenders.rb
|