RTALogger 1.0.0 → 1.1.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
  SHA256:
3
- metadata.gz: d4c558e31bfbc739d0ad9ebb218c96c61fdcc354b6ae9a9c0daa3ea4743786c3
4
- data.tar.gz: b00ec909d9a8791671e29e949fb19cfb31e59d7fbf353532a70bfb216e6b4e45
3
+ metadata.gz: c27d68d46d9d0ff75577b50a1b29983ce9012bc1d3dc86778b197154596ab2c5
4
+ data.tar.gz: 53ebb2215c5a2e4733de28b9178c9d4db5713aa87483309407be0de1763b36f1
5
5
  SHA512:
6
- metadata.gz: c6296831235e737111217cf51f4e3d477620d588319fb0540760b948028b26f87361e03cc7c453dd00ab3c4553a26ad045791e2d9e64d1153017246e664348bd
7
- data.tar.gz: 39885f5f4f039199748d9201f632ac4e745bd41cced49971ddc70b9599281c556a2d85e3fb13332a76cb0b01d78f1efb88d510331071332ccfdcbd26528543a7
6
+ metadata.gz: e731b3cd50b9c13b017679a34e9136b743055e50892017a73890d5f74031f6d88fc437b8a26dee5abe8207fcc9c1616c83ab998f77ee216701c2fd0d98220cc2
7
+ data.tar.gz: 871fd3047f195f7076e08eeec631bc3f0143ea4c4f8ae483bf054e244e5e6f75541f775f0b4f973e8127a592cace225922357fb7f9167f00623f3845bd0573b7
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- RTALogger (1.0.0)
4
+ RTALogger (1.1.0)
5
5
  fluent-logger (~> 0.9)
6
6
  jbuilder (~> 2.10)
7
7
 
@@ -1,3 +1,3 @@
1
1
  module RTALogger
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.1.0'.freeze
3
3
  end
@@ -1,3 +1,5 @@
1
+ require_relative 'log_formatter_base'
2
+
1
3
  module RTALogger
2
4
  # Log factory to get new instance of log formatter
3
5
  module LogFactory
@@ -8,7 +10,6 @@ module RTALogger
8
10
  def self.create_formatter(type, config_json = '')
9
11
  lib_file = @log_formatters[type.to_sym]
10
12
  raise "unregistered formatter class: #{type.to_s}" if lib_file.nil? || lib_file.empty?
11
-
12
13
  begin
13
14
  load lib_file
14
15
  rescue
@@ -30,6 +31,6 @@ module RTALogger
30
31
  end
31
32
 
32
33
  @log_formatters = {:text => 'log_formatter_text.rb',
33
- :json => 'log_formatter_json.rb'}
34
+ :json => 'log_formatter_json.rb'}
34
35
  end
35
36
  end
@@ -32,6 +32,6 @@ module RTALogger
32
32
  @log_repositories = {:console => 'log_repository_console.rb',
33
33
  :file => 'log_repository_file.rb',
34
34
  :udp => 'log_repository_upd.rb',
35
- :fluentd => 'log_repository_fluetnd.rb'}
35
+ :fluentd => 'log_repository_fluentd.rb'}
36
36
  end
37
37
  end
@@ -0,0 +1,33 @@
1
+ require 'jbuilder'
2
+ require_relative 'string'
3
+
4
+ module RTALogger
5
+ class LogFormatterBase
6
+ def initialize
7
+ @delimiter = '|'
8
+ end
9
+
10
+ attr_accessor :delimiter
11
+
12
+ def load_config(config_json)
13
+ @delimiter = config_json['delimiter'].nil? ? true : config_json['delimiter']
14
+ end
15
+
16
+ def format(log_record)
17
+ log_record.to_s
18
+ end
19
+
20
+ def to_builder
21
+ jb = Jbuilder.new do |json|
22
+ json.type self.class.to_s.split('::').last.underscore.sub('log_formatter_', '')
23
+ json.delimiter delimiter
24
+ end
25
+
26
+ jb
27
+ end
28
+
29
+ def reveal_config
30
+ to_builder.target!
31
+ end
32
+ end
33
+ end
@@ -1,10 +1,10 @@
1
1
  require 'jbuilder'
2
- require_relative 'log_formatter'
2
+ require_relative 'log_formatter_base'
3
3
 
4
4
  module RTALogger
5
5
  # json formatter which receive log_record and
6
6
  # returns it's data as json string
7
- class LogFormatterJson < LogFormatter
7
+ class LogFormatterJson < LogFormatterBase
8
8
  def format(log_record)
9
9
  return '' unless log_record
10
10
 
@@ -1,9 +1,9 @@
1
- require_relative 'log_formatter'
1
+ require_relative 'log_formatter_base'
2
2
 
3
3
  module RTALogger
4
4
  # text formatter which receive log_record and
5
5
  # returns it's data as delimited text string
6
- class LogFormatterText < LogFormatter
6
+ class LogFormatterText < LogFormatterBase
7
7
  def format(log_record)
8
8
  return '' unless log_record
9
9
 
@@ -58,7 +58,6 @@ module RTALogger
58
58
  @config_file_name = file_name if config_json
59
59
  apply_config(config_json)
60
60
  rescue StandardError => e
61
- puts e.message
62
61
  @propagator.drop_all_repositories
63
62
  @propagator.add_log_repository(LogFactory.create_repository(:console))
64
63
  end
@@ -67,7 +66,6 @@ module RTALogger
67
66
  config_json = load_config_from_json_string(config_string, manager_name)
68
67
  apply_config(config_json)
69
68
  rescue StandardError => e
70
- puts e.message
71
69
  @propagator.drop_all_repositories
72
70
  @propagator.add_log_repository(LogFactory.create_repository(:console))
73
71
  end
@@ -113,6 +111,9 @@ module RTALogger
113
111
  json.buffer_size buffer_size
114
112
  json.flush_size flush_size
115
113
  json.flush_wait_time flush_wait_time
114
+ json.repositories do
115
+ json.array! @propagator.repositories.collect { |repository| repository.to_builder.attributes! }
116
+ end
116
117
  json.topics do
117
118
  json.array! topics.keys.collect { |topic_key| @topics[topic_key].to_builder.attributes! }
118
119
  end
@@ -169,7 +170,7 @@ module RTALogger
169
170
  end
170
171
 
171
172
  def apply_config_repos(config_json)
172
- config_json['repos']&.each { |item| @propagator.load_log_repository(item) }
173
+ config_json['repositories']&.each { |item| @propagator.load_log_repository(item) }
173
174
  end
174
175
 
175
176
  def apply_config_topics(config_json)
@@ -5,17 +5,19 @@ module RTALogger
5
5
  class LogPropagator
6
6
  def initialize
7
7
  @semaphore = Mutex.new
8
- @log_records = []
9
- @log_repositories = []
8
+ @records = []
9
+ @repositories = []
10
10
  end
11
11
 
12
- def add_log(log_record)
13
- @semaphore.synchronize { @log_records.push(log_record.dup) }
12
+ attr_reader :repositories
13
+
14
+ def add_log(record)
15
+ @semaphore.synchronize { @records.push(record.dup) }
14
16
  end
15
17
 
16
- def add_log_repository(log_repository)
17
- return unless log_repository.is_a? RTALogger::LogRepository
18
- @log_repositories.push(log_repository) unless @log_repositories.include?(log_repository)
18
+ def add_log_repository(repository)
19
+ return unless repository.is_a? RTALogger::LogRepository
20
+ @repositories.push(repository) unless @repositories.include?(repository)
19
21
  end
20
22
 
21
23
  def load_log_repository(config_json)
@@ -24,20 +26,20 @@ module RTALogger
24
26
  enable = config_json['enable'].nil? ? true : config_json['enable']
25
27
  return unless enable
26
28
 
27
- log_repository = ::RTALogger::LogFactory.create_repository(type, config_json)
28
- add_log_repository(log_repository)
29
+ repository = ::RTALogger::LogFactory.create_repository(type, config_json)
30
+ add_log_repository(repository)
29
31
  end
30
32
 
31
33
  def drop_all_repositories
32
- @semaphore.synchronize { @log_repositories.clear }
34
+ @semaphore.synchronize { @repositories.clear }
33
35
  end
34
36
 
35
37
  def propagate
36
38
  @semaphore.synchronize do
37
- @log_repositories.each do |log_repository|
38
- log_repository.add_log_records(@log_records)
39
+ @repositories.each do |repository|
40
+ repository.add_log_records(@records)
39
41
  end
40
- @log_records.clear
42
+ @records.clear
41
43
  end
42
44
  end
43
45
  end
@@ -1,3 +1,5 @@
1
+ require_relative 'string'
2
+
1
3
  module RTALogger
2
4
  # base log repository class
3
5
  class LogRepository
@@ -5,6 +7,7 @@ module RTALogger
5
7
  @semaphore = Mutex.new
6
8
  @log_records = []
7
9
  @enable = true
10
+ @formatter = RTALogger::LogFactory.log_formatter_default
8
11
  end
9
12
 
10
13
  # @@sub_classes = {}
@@ -23,6 +26,7 @@ module RTALogger
23
26
  # end
24
27
 
25
28
  attr_accessor :enable
29
+ attr_accessor :formatter
26
30
 
27
31
  def add_log_records(items)
28
32
  return 0 unless @enable
@@ -41,6 +45,20 @@ module RTALogger
41
45
  end
42
46
  end
43
47
 
48
+ def to_builder
49
+ jb = Jbuilder.new do |json|
50
+ json.type self.class.to_s.split('::').last.underscore.sub('log_repository_', '')
51
+ json.enable enable
52
+ json.formatter @formatter.to_builder.attributes!
53
+ end
54
+
55
+ jb
56
+ end
57
+
58
+ def reveal_config
59
+ to_builder.target!
60
+ end
61
+
44
62
  protected
45
63
 
46
64
  def flush_and_clear
@@ -6,8 +6,6 @@ module RTALogger
6
6
  class LogRepositoryConsole < LogRepository
7
7
  def initialize
8
8
  super
9
-
10
- @formatter = RTALogger::LogFactory.log_formatter_default
11
9
  end
12
10
 
13
11
  def load_config(config_json)
@@ -7,8 +7,10 @@ module RTALogger
7
7
  class LogRepositoryFile < LogRepository
8
8
  def initialize(file_path = 'log.txt', period = 'daily', shift_size = 1_048_576)
9
9
  super()
10
- @file_logger = create_ruby_logger(file_path, period, shift_size)
11
- @formatter = RTALogger::LogFactory.log_formatter_default
10
+ @file_path = file_path
11
+ @period = period
12
+ @shift_size = shift_size
13
+ @file_logger = create_ruby_logger(@file_path, @period, @shift_size)
12
14
  end
13
15
 
14
16
  def load_config(config_json)
@@ -20,6 +22,15 @@ module RTALogger
20
22
  @file_logger = create_ruby_logger(file_path, period, shift_size)
21
23
  end
22
24
 
25
+ def to_builder
26
+ json = super
27
+ json.enable enable
28
+ json.file_path @file_path
29
+ json.period @period
30
+ json.shift_size @shift_size
31
+
32
+ json
33
+ end
23
34
  # register :file
24
35
 
25
36
  protected
@@ -2,10 +2,11 @@ require 'fluent-logger'
2
2
  require_relative 'log_repository'
3
3
 
4
4
  module RTALogger
5
- class LogRepositoryFluent < LogRepository
5
+ class LogRepositoryFluentd < LogRepository
6
6
  def initialize(host = 'localhost', port = 24224, tls_options = nil)
7
7
  super()
8
- @formatter = RTALogger::LogFactory.log_formatter_json
8
+ @host = host
9
+ @port = port
9
10
  @fluent_logger = create_fluentd_logger(host, port, tls_options)
10
11
  end
11
12
 
@@ -19,6 +20,14 @@ module RTALogger
19
20
  @fluent_logger = create_fluentd_logger(host, port, tls_options)
20
21
  end
21
22
 
23
+ def to_builder
24
+ json = super
25
+ json.enable enable
26
+ json.host @host
27
+ json.port @port
28
+
29
+ json
30
+ end
22
31
  # register :fluentd
23
32
 
24
33
  protected
@@ -11,7 +11,7 @@
11
11
  "severity_level": "debug",
12
12
  "buffer_size": 100,
13
13
  "flush_wait_seconds": 15,
14
- "repos":
14
+ "repositories":
15
15
  [
16
16
  {
17
17
  "enable": true,
@@ -4,7 +4,6 @@ require_relative 'log_factory_repository'
4
4
  controller_name = 'test_controller'
5
5
  userID = 5
6
6
 
7
-
8
7
  # RTALogger::LogFactory.register_log_repository :console, 'log_repository_console.rb'
9
8
 
10
9
  # create log manager instance
@@ -0,0 +1,9 @@
1
+ class String
2
+ def underscore
3
+ self.gsub(/::/, '/').
4
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
5
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
6
+ tr("-", "_").
7
+ downcase
8
+ end
9
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: RTALogger
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Babak Bahreini, RTA Backend Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-22 00:00:00.000000000 Z
11
+ date: 2020-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluent-logger
@@ -74,7 +74,7 @@ files:
74
74
  - lib/log_factory_record.rb
75
75
  - lib/log_factory_repository.rb
76
76
  - lib/log_factory_topic.rb
77
- - lib/log_formatter.rb
77
+ - lib/log_formatter_base.rb
78
78
  - lib/log_formatter_json.rb
79
79
  - lib/log_formatter_text.rb
80
80
  - lib/log_manager.rb
@@ -83,12 +83,13 @@ files:
83
83
  - lib/log_repository.rb
84
84
  - lib/log_repository_console.rb
85
85
  - lib/log_repository_file.rb
86
- - lib/log_repository_fluent.rb
86
+ - lib/log_repository_fluentd.rb
87
87
  - lib/log_repository_udp.rb
88
88
  - lib/log_topic.rb
89
89
  - lib/rta_logger_config.json
90
90
  - lib/sample.rb
91
91
  - lib/severity_level.rb
92
+ - lib/string.rb
92
93
  homepage: https://github.com/BBahrainy/RTALogger.git
93
94
  licenses:
94
95
  - MIT
@@ -1,18 +0,0 @@
1
- # Log Formatter base class
2
- module RTALogger
3
- class LogFormatter
4
- def initialize
5
- @delimiter = '|'
6
- end
7
-
8
- attr_accessor :delimiter
9
-
10
- def load_config(config_json)
11
- @delimiter = config_json['delimiter'].nil? ? true : config_json['delimiter']
12
- end
13
-
14
- def format(log_record)
15
- log_record.to_s
16
- end
17
- end
18
- end