RTALogger 1.0.0 → 1.1.0

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: 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