RTALogger 1.1.1 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,7 +17,7 @@ module RTALogger
17
17
  protected
18
18
 
19
19
  def flush_and_clear
20
- semaphore.synchronize do
20
+ @semaphore.synchronize do
21
21
  @log_records.each { |log_record| puts @formatter.format(log_record) }
22
22
  end
23
23
  super
@@ -31,8 +31,13 @@ module RTALogger
31
31
 
32
32
  json
33
33
  end
34
+
34
35
  # register :file
35
36
 
37
+ def apply_run_time_config(config_json)
38
+ super config_json
39
+ end
40
+
36
41
  protected
37
42
 
38
43
  def create_ruby_logger(file_path, period, shift_size)
@@ -45,7 +50,7 @@ module RTALogger
45
50
  end
46
51
 
47
52
  def flush_and_clear
48
- semaphore.synchronize do
53
+ @semaphore.synchronize do
49
54
  @log_records.each { |log_record| @file_logger.debug(@formatter.format(log_record)) }
50
55
  end
51
56
  super
@@ -7,43 +7,85 @@ module RTALogger
7
7
  super()
8
8
  @host = host
9
9
  @port = port
10
- @fluent_logger = create_fluentd_logger(host, port, tls_options)
10
+ @tls_options = tls_options
11
+ @fluent_logger = nil
11
12
  end
12
13
 
13
14
  def load_config(config_json)
14
15
  super
15
16
 
16
- host = config_json['host'].to_s
17
- port = config_json['port'].to_s
18
- tls_options = config_json['tls_options']
17
+ @host = config_json['host'].to_s
18
+ @port = config_json['port'].to_i
19
+ @tls_options = config_json['tls_options']
19
20
 
20
- @fluent_logger = create_fluentd_logger(host, port, tls_options)
21
+ @semaphore.synchronize { @fluent_logger = nil }
22
+ end
23
+
24
+ def host=(host)
25
+ if @host != host
26
+ @host = host ? host : 'localhost'
27
+ @semaphore.synchronize { @fluent_logger = nil }
28
+ end
29
+ end
30
+
31
+ def host
32
+ @host
33
+ end
34
+
35
+ def port=(port)
36
+ if @port != port
37
+ @port = port ? port : 24224
38
+ @semaphore.synchronize { @fluent_logger = nil }
39
+ end
40
+ end
41
+
42
+ def port
43
+ @port
21
44
  end
22
45
 
23
46
  def to_builder
24
47
  json = super
25
- json.enable enable
48
+ json.enable @enable
26
49
  json.host @host
27
50
  json.port @port
51
+ json.tls_options @tls_options
28
52
 
29
53
  json
30
54
  end
55
+
31
56
  # register :fluentd
32
57
 
58
+ def apply_run_time_config(config_json)
59
+ super config_json
60
+
61
+ @host = config_json['host'] unless config_json['host'].nil?
62
+ @port = config_json['port'] unless config_json['port'].nil?
63
+ @tls_options = config_json['tls_options'] unless config_json['tls_options'].nil?
64
+ @semaphore.synchronize { @fluent_logger = nil }
65
+ end
66
+
33
67
  protected
34
68
 
35
69
  def create_fluentd_logger(host, port, tls_options)
70
+ return nil unless @enable
71
+
36
72
  unless tls_options
37
73
  fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, :host => host, :port => port, :use_nonblock => true, :wait_writeable => false)
38
74
  else
39
- fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, :host => host, :port => port, :tls_options => tls_options, :use_nonblock => true, :wait_writeable => false)
75
+ fluent_logger = ::Fluent::Logger::FluentLogger.new(nil, :host => host,
76
+ :port => port,
77
+ :tls_options => tls_options,
78
+ :use_nonblock => true,
79
+ :wait_writeable => false)
40
80
  end
41
81
 
42
82
  fluent_logger
43
83
  end
44
84
 
45
85
  def flush_and_clear
46
- semaphore.synchronize do
86
+ @semaphore.synchronize do
87
+ @fluent_logger = create_fluentd_logger(@host, @port, @tls_options) unless @fluent_logger.present?
88
+
47
89
  @log_records.each do |log_record|
48
90
  fluent_tag = log_record.app_name + '.' + log_record.topic_title
49
91
  log_json_string = @formatter.format(log_record)
@@ -52,6 +94,7 @@ module RTALogger
52
94
  @fluent_logger.post(fluent_tag, log_json)
53
95
  end
54
96
  end
97
+
55
98
  super
56
99
  end
57
100
  end
@@ -21,6 +21,10 @@ module RTALogger
21
21
  attr_reader :title
22
22
  attr_accessor :severity_level
23
23
 
24
+ def trace(context_id, *message)
25
+ add(context_id, TRACE, message) if @severity_level.to_i <= TRACE.to_i
26
+ end
27
+
24
28
  def debug(context_id, *message)
25
29
  add(context_id, DEBUG, message) if @severity_level.to_i <= DEBUG.to_i
26
30
  end
@@ -54,6 +58,13 @@ module RTALogger
54
58
 
55
59
  jb
56
60
  end
61
+
62
+ def apply_run_time_config(config_json)
63
+ return unless config_json
64
+ @enable = config_json['enable'] unless config_json['enable'].nil?
65
+ @severity_level = parse_severity_level_to_i(config_json['severity_level']) unless config_json['severity_level'].nil?
66
+ end
67
+
57
68
  private
58
69
 
59
70
  def add(context_id, severity, *message)
@@ -5,26 +5,43 @@
5
5
  "log_managers":
6
6
  [
7
7
  {
8
- "manager_name": "develop",
8
+ "title": "develop",
9
9
  "enable": true,
10
10
  "app_name": "TestApp",
11
- "severity_level": "debug",
11
+ "severity_level": "trace",
12
12
  "buffer_size": 100,
13
13
  "flush_wait_seconds": 10,
14
14
  "repositories":
15
15
  [
16
16
  {
17
- "enable": true,
18
17
  "type": "console",
18
+ "title": "console_repo_1",
19
+ "enable": true,
19
20
  "formatter":
20
21
  {
21
22
  "type": "text",
22
23
  "delimiter": "|"
23
- }
24
+ },
25
+ "filters":
26
+ [
27
+ {
28
+ "type": "topic",
29
+ "title": "topic_filter_1",
30
+ "enable": true,
31
+ "default_regex" : "^test$"
32
+ },
33
+ {
34
+ "type": "message",
35
+ "title": "message_filter_1",
36
+ "enable": false,
37
+ "default_regex" : "error"
38
+ }
39
+ ]
24
40
  },
25
41
  {
26
- "enable": true,
27
42
  "type": "file",
43
+ "title": "file_repo_1",
44
+ "enable": true,
28
45
  "file_path": "log.txt",
29
46
  "roll_period": "daily",
30
47
  "roll_size": "1048576",
@@ -35,7 +52,8 @@
35
52
  }
36
53
  },
37
54
  {
38
- "enable": true,
55
+ "enable": false,
56
+ "title": "fluentd_repo_1",
39
57
  "type": "fluentd",
40
58
  "host": "localhost",
41
59
  "port": "8888",
@@ -28,6 +28,7 @@ test_topic = log_manager.add_topic('test')
28
28
  # test_topic.enable = false
29
29
 
30
30
  # add log information to log topic
31
+ topic.trace(userID, 'Controller Name=', controller_name, 'trace')
31
32
  topic.debug(userID, 'Controller Name=', controller_name, 'debug')
32
33
  topic.info(userID, 'Controller Name=', controller_name, 'information')
33
34
  topic.warning(userID, 'Controller Name=', controller_name, 'warning')
@@ -38,7 +39,7 @@ topic.unknown(userID, 'Controller Name=', controller_name, 'unknown')
38
39
  test_topic.error(userID, 'test_topic', 'error')
39
40
  test_topic.fatal(userID, 'test_topic', 'fatal')
40
41
 
41
- puts log_manager.reveal_config
42
+ # puts log_manager.reveal_config
42
43
 
43
44
  # update specific topic log level if necessary
44
45
  # log_manager.update_topic_level(controller_name, RTALogger::SeverityLevel::INFO)
@@ -1,60 +1,68 @@
1
1
  module RTALogger
2
2
  # Logging severity.
3
3
  module SeverityLevel
4
+ # all information that helps us to trace the processing of an incoming request through our application
5
+ TRACE = 0
4
6
  # Low-level information, mostly for developers.
5
- DEBUG = 0
7
+ DEBUG = 1
6
8
  # Generic (useful) information about system operation.
7
- INFO = 1
9
+ INFO = 2
8
10
  # A warning.
9
- WARN = 2
11
+ WARN = 3
10
12
  # A handleable error condition.
11
- ERROR = 3
13
+ ERROR = 4
12
14
  # An un-handleable error that results in a program crash.
13
- FATAL = 4
15
+ FATAL = 5
14
16
  # An unknown message that should always be logged.
15
- UNKNOWN = 5
17
+ UNKNOWN = 6
16
18
 
17
19
 
18
20
  def parse_severity_level_to_i(severity_level)
19
21
  return severity_level if severity_level.is_a? ::Integer
20
22
 
21
23
  case severity_level.upcase
22
- when 'DEBUG'
24
+ when 'TRACE'
23
25
  0
24
- when 'INFO'
26
+ when 'DEBUG'
25
27
  1
28
+ when 'INFO'
29
+ 2
26
30
  when 'INFORMATIONّٔ'
27
- 1
28
- when 'WARN'
29
31
  2
32
+ when 'WARN'
33
+ 3
30
34
  when 'WARNING'
31
- 2
35
+ 5
32
36
  when 'ERROR'
33
- 3
34
- when 'FATAL'
35
37
  4
36
- when 'UNKNOWN'
38
+ when 'FATAL'
37
39
  5
40
+ when 'UNKNOWN'
41
+ 6
42
+ else
43
+ 2
38
44
  end
39
- end
45
+ end
40
46
 
41
- def parse_severity_level_to_s(severity_level)
42
- return severity_level if severity_level.is_a? ::String
47
+ def parse_severity_level_to_s(severity_level)
48
+ return severity_level if severity_level.is_a? ::String
43
49
 
44
- case severity_level.to_i
45
- when 0
46
- 'DEBUG'
47
- when 1
48
- 'INFO'
49
- when 2
50
- 'WARN'
51
- when 3
52
- 'ERROR'
53
- when 4
54
- 'FATAL'
55
- when 5
56
- 'UNKNOWN'
57
- end
50
+ case severity_level.to_i
51
+ when 0
52
+ 'TRACE'
53
+ when 1
54
+ 'DEBUG'
55
+ when 2
56
+ 'INFO'
57
+ when 3
58
+ 'WARN'
59
+ when 4
60
+ 'ERROR'
61
+ when 5
62
+ 'FATAL'
63
+ when 6
64
+ 'UNKNOWN'
58
65
  end
59
66
  end
60
67
  end
68
+ 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.1.1
4
+ version: 2.1.1
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-26 00:00:00.000000000 Z
11
+ date: 2020-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluent-logger
@@ -68,12 +68,17 @@ files:
68
68
  - bin/setup
69
69
  - lib/RTALogger.rb
70
70
  - lib/RTALogger/version.rb
71
+ - lib/log_factory_filter.rb
71
72
  - lib/log_factory_log_formatter.rb
72
73
  - lib/log_factory_manager.rb
73
74
  - lib/log_factory_propagator.rb
74
75
  - lib/log_factory_record.rb
75
76
  - lib/log_factory_repository.rb
76
77
  - lib/log_factory_topic.rb
78
+ - lib/log_filter_base.rb
79
+ - lib/log_filter_context.rb
80
+ - lib/log_filter_message.rb
81
+ - lib/log_filter_topic.rb
77
82
  - lib/log_formatter_base.rb
78
83
  - lib/log_formatter_json.rb
79
84
  - lib/log_formatter_text.rb