fluent-plugin-kubernetes-log-level 0.1.4 → 0.2.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8d151fecafb83c99cc458d6033eed3434173d07
|
4
|
+
data.tar.gz: 8f3e9ac1599e8dfb0a66c40021ece373005faaff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27a4af560a7f25cde3b84b2fa9bdcab549d127232bb8f8ad05bf488e7a6b22723c4d1cb1d8998f78b1adf8732ae40c631c8513f02e488cc3f22094039df88770
|
7
|
+
data.tar.gz: 698d60e02afaa5d4bce6cf866862914c86ff438950093b425f66455310e42173390accf43f94d27e2e68bf905c70f677b5baa0663467d06230960540d6cfe48d
|
data/README.md
CHANGED
@@ -33,7 +33,8 @@ $ bundle
|
|
33
33
|
Configuration options for fluent.conf are:
|
34
34
|
|
35
35
|
* `log_level_label` - kubernetes label name for setting current log level
|
36
|
-
* `
|
36
|
+
* `log_level_key_label` - kubernetes label name for getting current log level from record
|
37
|
+
* `default_log_level_key` - default key in log record to indicate the current record's level
|
37
38
|
* `default_logging_level` - default logging levels for kubernetes services missing a `log_level_label`
|
38
39
|
|
39
40
|
## Copyright
|
@@ -20,28 +20,28 @@ module Fluent
|
|
20
20
|
class KubernetesLogLevelFilter < Fluent::Plugin::Filter
|
21
21
|
Fluent::Plugin.register_filter("kubernetes_log_level", self)
|
22
22
|
|
23
|
-
|
24
|
-
config_param :
|
25
|
-
config_param :
|
26
|
-
config_param :default_logging_level, :string
|
23
|
+
config_param :log_level_label, :string, :default => 'logging-level'
|
24
|
+
config_param :log_level_key_label, :string, :default => 'logging-level-key'
|
25
|
+
config_param :default_log_level_key, :string, :default => 'level'
|
26
|
+
config_param :default_logging_level, :string, :default => ''
|
27
27
|
|
28
28
|
def configure(conf)
|
29
29
|
super
|
30
30
|
end
|
31
31
|
|
32
32
|
def level_to_num(level)
|
33
|
-
case level
|
34
|
-
when 'trace', '
|
33
|
+
case level.downcase
|
34
|
+
when 'trace', 'verbose'
|
35
35
|
10
|
36
|
-
when 'debug'
|
36
|
+
when 'debug'
|
37
37
|
20
|
38
|
-
when 'info', '
|
38
|
+
when 'info', 'information'
|
39
39
|
30
|
40
|
-
when 'warning'
|
40
|
+
when 'warning'
|
41
41
|
40
|
42
|
-
when 'error'
|
42
|
+
when 'error'
|
43
43
|
50
|
44
|
-
when 'fatal'
|
44
|
+
when 'fatal'
|
45
45
|
60
|
46
46
|
else
|
47
47
|
0
|
@@ -51,40 +51,45 @@ module Fluent
|
|
51
51
|
def filter(tag, time, record)
|
52
52
|
|
53
53
|
log.trace "Start to process record"
|
54
|
-
|
54
|
+
|
55
|
+
log_level_key = @default_log_level_key
|
56
|
+
logging_level = @default_logging_level
|
57
|
+
app = 'app'
|
58
|
+
|
55
59
|
if record.has_key?("kubernetes")
|
56
60
|
if record["kubernetes"].has_key?("labels")
|
61
|
+
if record["kubernetes"]["labels"].has_key?('app')
|
62
|
+
app = record['kubernetes']['labels']['app']
|
63
|
+
end
|
64
|
+
|
65
|
+
if record["kubernetes"]["labels"].has_key?(@log_level_key_label)
|
66
|
+
log_level_key = record['kubernetes']['labels'][@log_level_key_label]
|
67
|
+
log.debug "[App: #{app}]: kubernetes.labels.#{@log_level_key_label} found with the value #{log_level_key}"
|
68
|
+
end
|
69
|
+
|
57
70
|
if record["kubernetes"]["labels"].has_key?(@log_level_label)
|
58
|
-
|
59
|
-
|
60
|
-
is_logging_label_exist = true
|
71
|
+
logging_level = record['kubernetes']['labels'][@log_level_label]
|
72
|
+
log.debug "[App: #{app}]: kubernetes.labels.#{@log_level_label} found with the value #{logging_level}"
|
61
73
|
end
|
62
74
|
end
|
63
75
|
end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
log.debug "No logging-level label was found"
|
68
|
-
if @default_logging_level.nil?
|
69
|
-
record
|
70
|
-
else
|
71
|
-
numeric_logging_level = level_to_num(@default_logging_level)
|
72
|
-
log.debug "[App: #{record['kubernetes']['labels']['app']}]: Logging level set to #{@default_logging_level}"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
+
|
77
|
+
numeric_logging_level = level_to_num(logging_level)
|
78
|
+
|
76
79
|
log.trace "Process current log level"
|
77
|
-
if record.has_key?(
|
78
|
-
log.debug "[App: #{
|
79
|
-
|
80
|
+
if record.has_key?(log_level_key.capitalize)
|
81
|
+
log.debug "[App: #{app}]: Downcasing capitalized log_level from #{log_level_key.capitalize}"
|
82
|
+
current_log_level = record[log_level_key.capitalize]
|
83
|
+
else
|
84
|
+
current_log_level = record[log_level_key]
|
80
85
|
end
|
81
86
|
|
82
|
-
numeric_level = level_to_num(
|
87
|
+
numeric_level = level_to_num(current_log_level)
|
83
88
|
if numeric_level >= numeric_logging_level
|
84
|
-
log.debug "[App: #{
|
89
|
+
log.debug "[App: #{app}]: Emitting record with #{current_log_level} level"
|
85
90
|
record
|
86
91
|
else
|
87
|
-
log.debug "[App: #{
|
92
|
+
log.debug "[App: #{app}]: Dropping record with #{current_log_level} level"
|
88
93
|
nil
|
89
94
|
end
|
90
95
|
end
|
@@ -38,7 +38,6 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
|
|
38
38
|
|
39
39
|
@expected_static_capital_level = [{
|
40
40
|
'Level' => 'Warning',
|
41
|
-
'level' => 'Warning',
|
42
41
|
'kubernetes' => {
|
43
42
|
'labels' => {
|
44
43
|
'app' => 'demo'
|
@@ -55,11 +54,28 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
|
|
55
54
|
}
|
56
55
|
}
|
57
56
|
}]
|
57
|
+
|
58
|
+
@expected_no_default_log_level = [{
|
59
|
+
'level' => 'error',
|
60
|
+
'kubernetes' => {
|
61
|
+
'labels' => {
|
62
|
+
'app' => 'demo'
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}]
|
66
|
+
|
67
|
+
@expected_log_level_key = [{
|
68
|
+
'levelname' => 'error',
|
69
|
+
'kubernetes' => {
|
70
|
+
'labels' => {
|
71
|
+
'logging-level-key' => 'levelname',
|
72
|
+
'app' => 'demo'
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}]
|
58
76
|
end
|
59
77
|
|
60
78
|
CONFIG = %[
|
61
|
-
log_level_label logging-level
|
62
|
-
log_level_key level
|
63
79
|
default_logging_level warning
|
64
80
|
]
|
65
81
|
|
@@ -69,16 +85,24 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
|
|
69
85
|
Fluent::Test::Driver::Filter.new(Fluent::Plugin::KubernetesLogLevelFilter).configure(conf)
|
70
86
|
end
|
71
87
|
|
72
|
-
def filter(msg, time = event_time("2017-07-12 19:20:21 UTC"))
|
73
|
-
d = create_driver
|
88
|
+
def filter(msg, conf = CONFIG, time = event_time("2017-07-12 19:20:21 UTC"))
|
89
|
+
d = create_driver(conf)
|
74
90
|
d.run { d.feed('kubernetes', time, msg) }
|
75
91
|
d.filtered_records
|
76
92
|
end
|
77
93
|
|
78
94
|
def test_default_configuration
|
79
|
-
|
95
|
+
conf = %[
|
96
|
+
log_level_label logging-level
|
97
|
+
log_level_key_label logging-level-key
|
98
|
+
default_log_level_key level
|
99
|
+
default_logging_level warning
|
100
|
+
]
|
101
|
+
|
102
|
+
d = create_driver(conf)
|
80
103
|
assert_equal 'logging-level', d.instance.config['log_level_label']
|
81
|
-
assert_equal 'level', d.instance.config['
|
104
|
+
assert_equal 'logging-level-key', d.instance.config['log_level_key_label']
|
105
|
+
assert_equal 'level', d.instance.config['default_log_level_key']
|
82
106
|
assert_equal 'warning', d.instance.config['default_logging_level']
|
83
107
|
end
|
84
108
|
|
@@ -101,4 +125,13 @@ class KubernetesLogLevelFilterTest < Test::Unit::TestCase
|
|
101
125
|
def test_serilog_structure
|
102
126
|
assert_equal @expected_static_capital_level, filter({"Level"=>"Warning", "kubernetes"=>{"labels"=>{"app"=>"demo"}}})
|
103
127
|
end
|
128
|
+
|
129
|
+
def test_no_default_log_level
|
130
|
+
conf = %[]
|
131
|
+
assert_equal @expected_no_default_log_level, filter({"level"=>"error", "kubernetes"=>{"labels"=>{"app"=>"demo"}}}, conf)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_custom_log_level
|
135
|
+
assert_equal @expected_log_level_key, filter({"levelname"=>"error", "kubernetes"=>{"labels"=>{"logging-level-key"=>"levelname","app"=>"demo"}}})
|
136
|
+
end
|
104
137
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-kubernetes-log-level
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yaron-idan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|