testa_logger 0.1.23 → 0.1.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1fc3283c9e219fa0df7fa94523a6c71d5078095137b40605cf7a28c6c775a67d
4
- data.tar.gz: 3bd3c773dc957103999ccc809c562b8fc4ef22600a643411d12f393d2a2b31f7
3
+ metadata.gz: 6ea01fffdf48772f4fa366f3e4730c53aa7dd1d366fd3b16e839acfde756e876
4
+ data.tar.gz: 3fd7fe0c69af421586140b6be1d2d811312a7e338059331938c751a7d1ef2f62
5
5
  SHA512:
6
- metadata.gz: a6f72724334e8d75e0a9dbcbaa1de87afd25c0f203b6e60c7656e0cfcafab5e040dead005eab6e2055d68a9712d376ba0ee9fe389ca07ceab1f5f4cefa3133cf
7
- data.tar.gz: 65f0fb6dc5f8147167172a97ed046ab6847904cc631b7fade48172e3e637eaaaac0534e75bb2417614b32e7d7b90f957870a90553d7c53c54862f50745b50618
6
+ metadata.gz: 4d9121752a32f087931db122c6268f2d1a98470a19a440b2315d34c776e5200c61269e8825508a145181b4fb291c007c5df6231d2289f346ba15e04f29a7df08
7
+ data.tar.gz: c7cd4e516d98b52959b8db64b3168af65ebe1f938bac24d9194557311d3f0f8de9a028cb8733b8e369587ba25314b7b6905d2154f4337f2516cd271fa7e0c53b
data/Gemfile.lock CHANGED
@@ -1,11 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- testa_logger (0.1.23)
4
+ testa_logger (0.1.27)
5
5
  activesupport
6
6
  awesome_print
7
7
  aws-sdk-s3
8
- concurrent-ruby
9
8
  json
10
9
  securerandom
11
10
 
@@ -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
@@ -15,7 +15,7 @@ module TestaLogger
15
15
  @faye_token = faye_token
16
16
  @channel = "/logs/live/#{logger.app}/#{logger.group}"
17
17
  @channel += "/#{logger.subgroup}" unless logger.subgroup.nil?
18
- @outbox = Concurrent::Array.new
18
+ @outbox = []
19
19
  run_dispatch_thread
20
20
  at_exit { dispatch if @outbox.count.positive? }
21
21
  end
@@ -17,15 +17,13 @@ module TestaLogger
17
17
  raise IoPersistenceError if @log_device.is_a?(IO)
18
18
 
19
19
  begin
20
- # stop writing into log file with it is being attached, otherwise checksum integrity will fail.
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
- write_thread["stop"] = false
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
- write_thread["stop"] = true
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
- write_thread["stop"] = false
59
- write_thread.run
55
+ @pause = false
60
56
  end
61
57
  end
62
58
  end
@@ -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
- add_log_to_queue(DEBUG, tag, args, &block)
74
+ add(DEBUG, tag, args, &block)
93
75
  end
94
76
 
95
77
  def info(tag = nil, *args, &block)
96
- add_log_to_queue(INFO, tag, args, &block)
78
+ add(INFO, tag, args, &block)
97
79
  end
98
80
 
99
81
  def warn(tag = nil, *args, &block)
100
- add_log_to_queue(WARN, tag, args, &block)
82
+ add(WARN, tag, args, &block)
101
83
  end
102
84
 
103
85
  def error(tag = nil, *args, &block)
104
- add_log_to_queue(ERROR, tag, args, &block)
86
+ add(ERROR, tag, args, &block)
105
87
  end
106
88
 
107
89
  def fatal(tag = nil, *args, &block)
108
- add_log_to_queue(FATAL, tag, args, &block)
90
+ add(FATAL, tag, args, &block)
109
91
  end
110
92
 
111
93
  def unknown(tag = nil, *args, &block)
112
- add_log_to_queue(UNKNOWN, tag, args, &block)
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 add_log_to_queue(level, tag, args, &block)
174
+ def add(level, tag, args, &block)
193
175
  return if level < options.level
194
176
 
195
177
  time = Time.now
@@ -199,9 +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
- # after forking process, write thread will stop working in the forked process
203
- start_write_thread if @pid.nil? || @pid != Process.pid
204
- @queue << log
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
+
205
196
  @dispatcher.push(level, time, tag, message, log) if options.live
206
197
  return unless options.stdout
207
198
 
@@ -1,3 +1,3 @@
1
1
  module TestaLogger
2
- VERSION = "0.1.23"
2
+ VERSION = "0.1.27"
3
3
  end
data/lib/testa_logger.rb CHANGED
@@ -5,7 +5,6 @@ require_relative "testa_logger/io_persistence_error"
5
5
  require "active_support"
6
6
  require "active_support/core_ext/hash"
7
7
  require "awesome_print"
8
- require "concurrent-ruby"
9
8
  require "json"
10
9
  require "uri"
11
10
  require "net/http"
data/testa_logger.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency "activesupport"
22
22
  spec.add_runtime_dependency "awesome_print"
23
23
  spec.add_runtime_dependency "aws-sdk-s3"
24
- spec.add_runtime_dependency "concurrent-ruby"
24
+ # spec.add_runtime_dependency "concurrent-ruby"
25
25
  spec.add_runtime_dependency "json"
26
26
  spec.add_runtime_dependency "securerandom"
27
27
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: testa_logger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - karlo.razumovic
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: concurrent-ruby
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: json
71
57
  requirement: !ruby/object:Gem::Requirement