journald-logger 1.1.1 → 2.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 +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +11 -9
- data/journald-logger.gemspec +1 -1
- data/lib/journald/classes/logger.rb +32 -25
- data/lib/journald/classes/trace_logger.rb +1 -4
- data/lib/journald/modules/exceptionable.rb +5 -8
- data/lib/journald/modules/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eaa7f70e9a09a6429c672b60ba973d4f9d545c06
|
|
4
|
+
data.tar.gz: b01df4422dd13e47c001eddeaafe05398ded8ac7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ba24c66aceca488ab25698c9db07716a5116cb1556de8d9b449f8bbd924f729941e7a09712527ff9eea2ec79dc748e4814f6b813d7172fee64089124a67480c5
|
|
7
|
+
data.tar.gz: bbdcde2b188bb1cea50809dac1d4c4aaf563be3a9b3f15380c86845588e9d13b74d8095994ba4ffe56af7233a8251fdd4c76e19d15399adb1c5b1acee566fd04
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
|
@@ -56,12 +56,14 @@ Tags are used to add systemd-journal fields to all subsequent log calls until re
|
|
|
56
56
|
|
|
57
57
|
```ruby
|
|
58
58
|
logger = Journald::Logger.new('gandalf', world: 'arda') # set world tag in costructor
|
|
59
|
-
logger.tag :
|
|
60
|
-
logger.tag(:
|
|
61
|
-
# log as 'MESSAGE=you shall not pass!', 'PRIORITY=4', 'LOCATION=moria', 'OBJECT=balrog', 'WORLD=arda'
|
|
59
|
+
logger.tag location: 'shire', weapon: 'staff' # add/replace location and weapon
|
|
60
|
+
logger.tag(location: 'moria', object: 'balrog') do # change location and use object in the block
|
|
61
|
+
# log as 'MESSAGE=you shall not pass!', 'PRIORITY=4', 'LOCATION=moria', 'OBJECT=balrog', 'WORLD=arda', 'WEAPON=staff'
|
|
62
62
|
logger.warn 'you shall not pass!'
|
|
63
|
-
end
|
|
64
|
-
|
|
63
|
+
end # return location & object to the previous state
|
|
64
|
+
# log as 'MESSAGE=That was not in canon!', 'PRIORITY=6', 'LOCATION=shire', 'WORLD=arda', 'WEAPON=staff'
|
|
65
|
+
logger.info 'That was not in canon!'
|
|
66
|
+
logger.untag :location, :weapon # remove location and weapon
|
|
65
67
|
```
|
|
66
68
|
|
|
67
69
|
Tag names must follow systemd-journal fields naming convention:
|
|
@@ -72,11 +74,11 @@ letters, numbers, underscores, cannot begin with underscore. Library upcases all
|
|
|
72
74
|
Two methods which look similarly to native systemd-journal api
|
|
73
75
|
|
|
74
76
|
```ruby
|
|
75
|
-
logger.send(
|
|
77
|
+
logger.send(
|
|
76
78
|
message: 'hi!',
|
|
77
79
|
priority: Journald::LOG_NOTICE,
|
|
78
80
|
any_field: 'any_value',
|
|
79
|
-
|
|
81
|
+
) # tags will be added here
|
|
80
82
|
logger.print Journald::LOG_NOTICE, 'hi!' # and here
|
|
81
83
|
```
|
|
82
84
|
|
|
@@ -107,11 +109,11 @@ Exception logger automatically fills the following fields:
|
|
|
107
109
|
EXCEPTION_CLASS=ExceptionRealClassName
|
|
108
110
|
EXCEPTION_MESSAGE=Original exception message
|
|
109
111
|
BACKTRACE=full backtrace
|
|
110
|
-
CAUSE=exception cause
|
|
112
|
+
CAUSE=exception cause
|
|
111
113
|
GEM_LOGGER_MESSAGE_TYPE=Exception
|
|
112
114
|
```
|
|
113
115
|
|
|
114
|
-
|
|
116
|
+
It also tries to log ```CODE_LINE```, ```CODE_FILE``` and ```CODE_FUNC``` and try to recurse into Cause and log it into a separate message with ```GEM_LOGGER_MESSAGE_TYPE=ExceptionCause```
|
|
115
117
|
|
|
116
118
|
## License
|
|
117
119
|
|
data/journald-logger.gemspec
CHANGED
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
17
17
|
spec.require_paths = ['lib']
|
|
18
18
|
|
|
19
|
-
spec.required_ruby_version = '>= 2.
|
|
19
|
+
spec.required_ruby_version = '>= 2.1.0'
|
|
20
20
|
|
|
21
21
|
spec.add_runtime_dependency 'journald-native', '~> 1.0'
|
|
22
22
|
|
|
@@ -4,17 +4,7 @@ module Journald
|
|
|
4
4
|
include Loggable
|
|
5
5
|
include Sysloggable
|
|
6
6
|
|
|
7
|
-
def initialize(progname = nil, min_priority = nil, tags
|
|
8
|
-
if progname.is_a? Hash
|
|
9
|
-
tags = progname
|
|
10
|
-
progname = min_priority = nil
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
if min_priority.is_a? Hash
|
|
14
|
-
tags = min_priority
|
|
15
|
-
min_priority = nil
|
|
16
|
-
end
|
|
17
|
-
|
|
7
|
+
def initialize(progname = nil, min_priority = nil, **tags)
|
|
18
8
|
@tags = tags
|
|
19
9
|
@logger = Native
|
|
20
10
|
self.min_priority = min_priority
|
|
@@ -26,7 +16,7 @@ module Journald
|
|
|
26
16
|
end
|
|
27
17
|
|
|
28
18
|
def progname=(value)
|
|
29
|
-
tag(:
|
|
19
|
+
tag(syslog_identifier: value)
|
|
30
20
|
end
|
|
31
21
|
|
|
32
22
|
attr_reader :min_priority
|
|
@@ -52,13 +42,22 @@ module Journald
|
|
|
52
42
|
|
|
53
43
|
# add tags
|
|
54
44
|
|
|
55
|
-
# add
|
|
56
|
-
def tag(
|
|
57
|
-
|
|
45
|
+
# add tags to all log messages
|
|
46
|
+
def tag(**tags)
|
|
47
|
+
values = {}
|
|
48
|
+
if block_given?
|
|
49
|
+
# remember old values
|
|
50
|
+
values = tag_values(*tags.keys)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
tags.each do |key, value|
|
|
54
|
+
@tags[key] = value
|
|
55
|
+
end
|
|
58
56
|
|
|
59
57
|
if block_given?
|
|
60
58
|
yield
|
|
61
|
-
|
|
59
|
+
# restore old values
|
|
60
|
+
tag(values)
|
|
62
61
|
end
|
|
63
62
|
end
|
|
64
63
|
|
|
@@ -67,29 +66,37 @@ module Journald
|
|
|
67
66
|
@tags[key]
|
|
68
67
|
end
|
|
69
68
|
|
|
69
|
+
# get tag values
|
|
70
|
+
# return everything including nil for non-set
|
|
71
|
+
def tag_values(*keys)
|
|
72
|
+
keys.inject({}) { |hash, key| hash[key] = @tags[key]; hash }
|
|
73
|
+
end
|
|
74
|
+
|
|
70
75
|
# stop adding the tag
|
|
71
|
-
def untag(
|
|
72
|
-
|
|
76
|
+
def untag(*keys)
|
|
77
|
+
keys.each do |key|
|
|
78
|
+
@tags.delete(key)
|
|
79
|
+
end
|
|
73
80
|
end
|
|
74
81
|
|
|
75
82
|
protected
|
|
76
83
|
|
|
77
84
|
# used internally by exception() and TraceLogger
|
|
78
85
|
def tag_trace_location(location)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
tag :
|
|
86
|
+
values = tag_values(:code_file, :code_line, :code_func)
|
|
87
|
+
|
|
88
|
+
tag code_file: location.path,
|
|
89
|
+
code_line: location.lineno,
|
|
90
|
+
code_func: location.label
|
|
82
91
|
|
|
83
92
|
if block_given?
|
|
84
93
|
yield
|
|
85
|
-
|
|
94
|
+
tag(values)
|
|
86
95
|
end
|
|
87
96
|
end
|
|
88
97
|
|
|
89
98
|
def untag_trace_location
|
|
90
|
-
untag :code_file
|
|
91
|
-
untag :code_line
|
|
92
|
-
untag :code_func
|
|
99
|
+
untag :code_file, :code_line, :code_func
|
|
93
100
|
end
|
|
94
101
|
|
|
95
102
|
private
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module Journald
|
|
2
2
|
class TraceLogger
|
|
3
|
-
def initialize(progname = nil, min_priority = nil, tags
|
|
3
|
+
def initialize(progname = nil, min_priority = nil, **tags)
|
|
4
4
|
@wrapped_logger = ::Journald::Logger.new(progname, min_priority, tags)
|
|
5
5
|
end
|
|
6
6
|
|
|
@@ -38,7 +38,4 @@ module Journald
|
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
|
-
|
|
42
|
-
# alias for the old class name
|
|
43
|
-
TracerLogger = TraceLogger
|
|
44
41
|
end
|
|
@@ -9,11 +9,8 @@ module Journald
|
|
|
9
9
|
private
|
|
10
10
|
|
|
11
11
|
def real_exception(e, priority, is_cause)
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
# for Ruby 2.1 get backtrace if present
|
|
15
|
-
bt = e.respond_to?(:backtrace_locations) &&
|
|
16
|
-
e.backtrace_locations &&
|
|
12
|
+
# get backtrace if present
|
|
13
|
+
bt = e.backtrace_locations &&
|
|
17
14
|
e.backtrace_locations.length > 0
|
|
18
15
|
|
|
19
16
|
tag_trace_location(e.backtrace_locations[0]) if bt
|
|
@@ -24,13 +21,13 @@ module Journald
|
|
|
24
21
|
gem_logger_message_type: is_cause ? 'ExceptionCause' : 'Exception',
|
|
25
22
|
exception_class: e.class.name,
|
|
26
23
|
exception_message: e.message,
|
|
27
|
-
backtrace: e.backtrace.join("\n"),
|
|
28
|
-
cause: cause ? cause.inspect : nil,
|
|
24
|
+
backtrace: bt ? e.backtrace.join("\n"): nil,
|
|
25
|
+
cause: e.cause ? e.cause.inspect : nil,
|
|
29
26
|
})
|
|
30
27
|
|
|
31
28
|
untag_trace_location if bt
|
|
32
29
|
|
|
33
|
-
real_exception(cause, priority, true) if cause
|
|
30
|
+
real_exception(e.cause, priority, true) if e.cause
|
|
34
31
|
end
|
|
35
32
|
end
|
|
36
33
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: journald-logger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Anton Smirnov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2015-08-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: journald-native
|
|
@@ -84,7 +84,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
84
84
|
requirements:
|
|
85
85
|
- - ">="
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
|
-
version: 2.
|
|
87
|
+
version: 2.1.0
|
|
88
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
requirements:
|
|
90
90
|
- - ">="
|
|
@@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
92
92
|
version: '0'
|
|
93
93
|
requirements: []
|
|
94
94
|
rubyforge_project:
|
|
95
|
-
rubygems_version: 2.4.
|
|
95
|
+
rubygems_version: 2.4.8
|
|
96
96
|
signing_key:
|
|
97
97
|
specification_version: 4
|
|
98
98
|
summary: systemd-journal native logger
|