testa_logger 0.1.25 → 0.1.27
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/Gemfile.lock +3 -3
- data/lib/testa_logger/log_device.rb +2 -2
- data/lib/testa_logger/logger/persistence.rb +4 -8
- data/lib/testa_logger/logger.rb +22 -32
- data/lib/testa_logger/version.rb +1 -1
- data/logger.iml +2 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ea01fffdf48772f4fa366f3e4730c53aa7dd1d366fd3b16e839acfde756e876
|
4
|
+
data.tar.gz: 3fd7fe0c69af421586140b6be1d2d811312a7e338059331938c751a7d1ef2f62
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d9121752a32f087931db122c6268f2d1a98470a19a440b2315d34c776e5200c61269e8825508a145181b4fb291c007c5df6231d2289f346ba15e04f29a7df08
|
7
|
+
data.tar.gz: c7cd4e516d98b52959b8db64b3168af65ebe1f938bac24d9194557311d3f0f8de9a028cb8733b8e369587ba25314b7b6905d2154f4337f2516cd271fa7e0c53b
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
testa_logger (0.1.
|
4
|
+
testa_logger (0.1.27)
|
5
5
|
activesupport
|
6
6
|
awesome_print
|
7
7
|
aws-sdk-s3
|
@@ -20,8 +20,8 @@ GEM
|
|
20
20
|
ast (2.4.2)
|
21
21
|
awesome_print (1.9.2)
|
22
22
|
aws-eventstream (1.2.0)
|
23
|
-
aws-partitions (1.
|
24
|
-
aws-sdk-core (3.
|
23
|
+
aws-partitions (1.620.0)
|
24
|
+
aws-sdk-core (3.132.0)
|
25
25
|
aws-eventstream (~> 1, >= 1.0.2)
|
26
26
|
aws-partitions (~> 1, >= 1.525.0)
|
27
27
|
aws-sigv4 (~> 1.1)
|
@@ -41,13 +41,13 @@ module TestaLogger
|
|
41
41
|
begin
|
42
42
|
@dev.write(message)
|
43
43
|
rescue StandardError => e
|
44
|
-
warn("log writing failed. #{e}")
|
44
|
+
warn("log writing failed 1. #{e}")
|
45
45
|
end
|
46
46
|
end
|
47
47
|
rescue SystemExit
|
48
48
|
exit 1
|
49
49
|
rescue Exception => e
|
50
|
-
warn("log writing failed. #{e}")
|
50
|
+
warn("log writing failed 2. #{e}")
|
51
51
|
end
|
52
52
|
|
53
53
|
def close
|
@@ -17,15 +17,13 @@ module TestaLogger
|
|
17
17
|
raise IoPersistenceError if @log_device.is_a?(IO)
|
18
18
|
|
19
19
|
begin
|
20
|
-
|
21
|
-
write_thread["stop"] = true
|
20
|
+
@pause = true
|
22
21
|
record.send(attachment_name).attach(io: File.open(options.filepath), filename: "#{attachment_name}.log")
|
23
22
|
rescue StandardError => e
|
24
23
|
error(TAG, e)
|
25
24
|
raise
|
26
25
|
ensure
|
27
|
-
|
28
|
-
write_thread.run
|
26
|
+
@pause = false
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
@@ -33,7 +31,7 @@ module TestaLogger
|
|
33
31
|
return if @s3.nil?
|
34
32
|
|
35
33
|
begin
|
36
|
-
|
34
|
+
@pause = true
|
37
35
|
|
38
36
|
key = "logs/#{app}/#{group}"
|
39
37
|
key += "/#{subgroup}" unless subgroup.nil?
|
@@ -44,7 +42,6 @@ module TestaLogger
|
|
44
42
|
time_string = Time.now.strftime("%H_%M_%S")
|
45
43
|
key += "/#{filename}_#{time_string}#{extension}"
|
46
44
|
|
47
|
-
# stop writing into log file with it is being attached, otherwise checksum integrity will fail.
|
48
45
|
response = @s3.put_object(
|
49
46
|
bucket: options.s3_credentials[:bucket_name],
|
50
47
|
key: key,
|
@@ -55,8 +52,7 @@ module TestaLogger
|
|
55
52
|
error(TAG, e)
|
56
53
|
raise
|
57
54
|
ensure
|
58
|
-
|
59
|
-
write_thread.run
|
55
|
+
@pause = false
|
60
56
|
end
|
61
57
|
end
|
62
58
|
end
|
data/lib/testa_logger/logger.rb
CHANGED
@@ -34,15 +34,16 @@ module TestaLogger
|
|
34
34
|
NO_TAG = "NO-TAG"
|
35
35
|
|
36
36
|
def initialize(app, group, subgroup = nil, options = {})
|
37
|
+
@pause = false
|
38
|
+
@pending_logs = []
|
39
|
+
|
37
40
|
@app = app
|
38
41
|
@group = group
|
39
42
|
@subgroup = subgroup
|
40
43
|
@options = Options.new(app, group, subgroup, options)
|
41
44
|
create_log_file
|
42
45
|
setup_dispatcher
|
43
|
-
# start_write_thread
|
44
46
|
init_s3_client if @options.persist
|
45
|
-
# at_exit { flush_queue }
|
46
47
|
end
|
47
48
|
|
48
49
|
def create_log_file
|
@@ -65,51 +66,32 @@ module TestaLogger
|
|
65
66
|
)
|
66
67
|
end
|
67
68
|
|
68
|
-
def start_write_thread
|
69
|
-
@pid = Process.pid
|
70
|
-
# we must use this queue in order to be able to collect logs in trap context
|
71
|
-
@queue = Queue.new
|
72
|
-
@write_thread = Thread.new do
|
73
|
-
loop { queue_pop }
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def flush_queue
|
78
|
-
queue_pop while @queue.size.positive?
|
79
|
-
end
|
80
|
-
|
81
|
-
def queue_pop
|
82
|
-
text = @queue.pop
|
83
|
-
Thread.stop if Thread.current["stop"]
|
84
|
-
@log_device.write(text)
|
85
|
-
end
|
86
|
-
|
87
69
|
def formatter
|
88
70
|
options.formatter
|
89
71
|
end
|
90
72
|
|
91
73
|
def debug(tag = nil, *args, &block)
|
92
|
-
|
74
|
+
add(DEBUG, tag, args, &block)
|
93
75
|
end
|
94
76
|
|
95
77
|
def info(tag = nil, *args, &block)
|
96
|
-
|
78
|
+
add(INFO, tag, args, &block)
|
97
79
|
end
|
98
80
|
|
99
81
|
def warn(tag = nil, *args, &block)
|
100
|
-
|
82
|
+
add(WARN, tag, args, &block)
|
101
83
|
end
|
102
84
|
|
103
85
|
def error(tag = nil, *args, &block)
|
104
|
-
|
86
|
+
add(ERROR, tag, args, &block)
|
105
87
|
end
|
106
88
|
|
107
89
|
def fatal(tag = nil, *args, &block)
|
108
|
-
|
90
|
+
add(FATAL, tag, args, &block)
|
109
91
|
end
|
110
92
|
|
111
93
|
def unknown(tag = nil, *args, &block)
|
112
|
-
|
94
|
+
add(UNKNOWN, tag, args, &block)
|
113
95
|
end
|
114
96
|
|
115
97
|
def level=(severity)
|
@@ -189,7 +171,7 @@ module TestaLogger
|
|
189
171
|
|
190
172
|
private
|
191
173
|
|
192
|
-
def
|
174
|
+
def add(level, tag, args, &block)
|
193
175
|
return if level < options.level
|
194
176
|
|
195
177
|
time = Time.now
|
@@ -199,10 +181,18 @@ module TestaLogger
|
|
199
181
|
formatted_severity = format_severity(level)
|
200
182
|
log = format_message(formatted_severity, time, "", tag_and_message)
|
201
183
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
184
|
+
if @pause
|
185
|
+
@pending_logs << log
|
186
|
+
else
|
187
|
+
if @pending_logs.count.positive?
|
188
|
+
@pending_logs.each do |pending_log|
|
189
|
+
@log_device.write(pending_log)
|
190
|
+
end
|
191
|
+
@pending_logs.clear
|
192
|
+
end
|
193
|
+
@log_device.write(log)
|
194
|
+
end
|
195
|
+
|
206
196
|
@dispatcher.push(level, time, tag, message, log) if options.live
|
207
197
|
return unless options.stdout
|
208
198
|
|
data/lib/testa_logger/version.rb
CHANGED
data/logger.iml
CHANGED
@@ -11,6 +11,8 @@
|
|
11
11
|
<orderEntry type="library" scope="PROVIDED" name="ast (v2.4.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
12
12
|
<orderEntry type="library" scope="PROVIDED" name="awesome_print (v1.9.2, RVM: ruby-2.7.6) [gem]" level="application" />
|
13
13
|
<orderEntry type="library" scope="PROVIDED" name="aws-eventstream (v1.2.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
14
|
+
<orderEntry type="library" scope="PROVIDED" name="aws-partitions (v1.620.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
15
|
+
<orderEntry type="library" scope="PROVIDED" name="aws-sdk-core (v3.132.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
14
16
|
<orderEntry type="library" scope="PROVIDED" name="aws-sdk-kms (v1.58.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
15
17
|
<orderEntry type="library" scope="PROVIDED" name="aws-sdk-s3 (v1.114.0, RVM: ruby-2.7.6) [gem]" level="application" />
|
16
18
|
<orderEntry type="library" scope="PROVIDED" name="aws-sigv4 (v1.5.1, RVM: ruby-2.7.6) [gem]" level="application" />
|