RTALogger 0.1.0 → 0.1.1
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/.idea/.gitignore +2 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/RTALogger.iml +36 -0
- data/.idea/misc.xml +7 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +18 -3
- data/README.md +37 -1
- data/RTALogger.gemspec +1 -0
- data/lib/RTALogger.rb +2 -4
- data/lib/RTALogger/version.rb +1 -1
- data/lib/{factory/origin/log_factory_file_logger.rb → log_factory_file_logger.rb} +3 -2
- data/lib/log_factory_log_formatter.rb +12 -0
- data/lib/{factory/origin/log_factory_manager.rb → log_factory_manager.rb} +1 -3
- data/lib/{factory/origin/log_factory_propagator.rb → log_factory_propagator.rb} +1 -2
- data/lib/{factory/origin/log_factory_record.rb → log_factory_record.rb} +1 -1
- data/lib/{factory/origin/log_factory_repository.rb → log_factory_repository.rb} +8 -9
- data/lib/{factory/origin/log_factory_topic.rb → log_factory_topic.rb} +1 -1
- data/lib/log_formatter.rb +1 -1
- data/lib/log_formatter_json.rb +3 -1
- data/lib/log_formatter_text.rb +9 -7
- data/lib/log_manager.rb +40 -15
- data/lib/log_propagator.rb +44 -45
- data/lib/log_record.rb +27 -28
- data/lib/log_repository.rb +1 -3
- data/lib/log_repository_console.rb +2 -3
- data/lib/log_repository_file.rb +4 -5
- data/lib/log_repository_udp.rb +1 -2
- data/lib/log_severity.rb +1 -1
- data/lib/log_topic.rb +3 -5
- data/lib/rta_logger_config.json +32 -0
- data/lib/sample.rb +37 -0
- metadata +30 -10
- data/lib/factory/origin/log_factory_log_formatter.rb +0 -11
- data/lib/log_test.rb +0 -41
- data/lib/log_test_db.rb +0 -59
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5cd821ed8beebbda5bfd6aff1088372642f5f20012c7f5d6ca8b2d59cc8dee42
|
|
4
|
+
data.tar.gz: 8dbf6b01f03b98525acade15eaebece1e500dfbc610f2d9cbda5e760df0e048b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7a1e77c33e3fb301780bb6d4a0b254701ab918403ee8705e19bda759b2c0ce56b1e1cf76c18012c195b5c3b28267dea524bbe3db303f7a9fb9dca58662fe9a2f
|
|
7
|
+
data.tar.gz: fd81ab07bb1a3c79e00e425298068e4cfa357208e4173f157a156e5cdefcb044f456604cfc0c3b9d0f37342e672d47636ffd75ceb4b5ef866a47f8f7db9bc7aa
|
data/.idea/.gitignore
ADDED
data/.idea/.rakeTasks
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Settings><!--This file was automatically generated by Ruby plugin.
|
|
3
|
+
You are allowed to:
|
|
4
|
+
1. Remove rake task
|
|
5
|
+
2. Add existing rake tasks
|
|
6
|
+
To add existing rake tasks automatically delete this file and reload the project.
|
|
7
|
+
--><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build RTALogger-0.1.0.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Remove any temporary products" fullCmd="clean" taksId="clean" /><RakeTask description="Remove any generated files" fullCmd="clobber" taksId="clobber" /><RakeTask description="Build and install RTALogger-0.1.0.gem into system gems" fullCmd="install" taksId="install" /><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="Build and install RTALogger-0.1.0.gem into system gems without network access" fullCmd="install:local" taksId="local" /></RakeGroup><RakeTask description="Create tag v0.1.0 and build and push RTALogger-0.1.0.gem to https://www.rubygems.org" fullCmd="release[remote]" taksId="release[remote]" /><RakeTask description="Run RSpec code examples" fullCmd="spec" taksId="spec" /></RakeGroup></Settings>
|
data/.idea/RTALogger.iml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="RUBY_MODULE" version="4">
|
|
3
|
+
<component name="ModuleRunConfigurationManager">
|
|
4
|
+
<shared />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="NewModuleRootManager">
|
|
7
|
+
<content url="file://$MODULE_DIR$" />
|
|
8
|
+
<orderEntry type="inheritedJdk" />
|
|
9
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
10
|
+
<orderEntry type="library" scope="PROVIDED" name="activesupport (v6.0.3.4, ruby-2.6.3-p62) [gem]" level="application" />
|
|
11
|
+
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, ruby-2.6.3-p62) [gem]" level="application" />
|
|
12
|
+
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.7, ruby-2.6.3-p62) [gem]" level="application" />
|
|
13
|
+
<orderEntry type="library" scope="PROVIDED" name="cool.io (v1.7.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
14
|
+
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.4.4, ruby-2.6.3-p62) [gem]" level="application" />
|
|
15
|
+
<orderEntry type="library" scope="PROVIDED" name="fluentd (v1.11.4, ruby-2.6.3-p62) [gem]" level="application" />
|
|
16
|
+
<orderEntry type="library" scope="PROVIDED" name="http_parser.rb (v0.6.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
17
|
+
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.8.5, ruby-2.6.3-p62) [gem]" level="application" />
|
|
18
|
+
<orderEntry type="library" scope="PROVIDED" name="jbuilder (v2.10.1, ruby-2.6.3-p62) [gem]" level="application" />
|
|
19
|
+
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.14.2, ruby-2.6.3-p62) [gem]" level="application" />
|
|
20
|
+
<orderEntry type="library" scope="PROVIDED" name="msgpack (v1.3.3, ruby-2.6.3-p62) [gem]" level="application" />
|
|
21
|
+
<orderEntry type="library" scope="PROVIDED" name="rake (v12.3.3, ruby-2.6.3-p62) [gem]" level="application" />
|
|
22
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.10.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
23
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.10.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
24
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.10.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
25
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.10.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
26
|
+
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.10.0, ruby-2.6.3-p62) [gem]" level="application" />
|
|
27
|
+
<orderEntry type="library" scope="PROVIDED" name="serverengine (v2.2.2, ruby-2.6.3-p62) [gem]" level="application" />
|
|
28
|
+
<orderEntry type="library" scope="PROVIDED" name="sigdump (v0.2.4, ruby-2.6.3-p62) [gem]" level="application" />
|
|
29
|
+
<orderEntry type="library" scope="PROVIDED" name="strptime (v0.2.5, ruby-2.6.3-p62) [gem]" level="application" />
|
|
30
|
+
<orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.6, ruby-2.6.3-p62) [gem]" level="application" />
|
|
31
|
+
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.7, ruby-2.6.3-p62) [gem]" level="application" />
|
|
32
|
+
<orderEntry type="library" scope="PROVIDED" name="tzinfo-data (v1.2020.4, ruby-2.6.3-p62) [gem]" level="application" />
|
|
33
|
+
<orderEntry type="library" scope="PROVIDED" name="yajl-ruby (v1.4.1, ruby-2.6.3-p62) [gem]" level="application" />
|
|
34
|
+
<orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.4.1, ruby-2.6.3-p62) [gem]" level="application" />
|
|
35
|
+
</component>
|
|
36
|
+
</module>
|
data/.idea/misc.xml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="JavaScriptSettings">
|
|
4
|
+
<option name="languageLevel" value="ES6" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="ruby-2.6.3-p62" project-jdk-type="RUBY_SDK" />
|
|
7
|
+
</project>
|
data/.idea/modules.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/RTALogger.iml" filepath="$PROJECT_DIR$/.idea/RTALogger.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
data/.idea/vcs.xml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
RTALogger (0.1.
|
|
4
|
+
RTALogger (0.1.1)
|
|
5
5
|
fluentd (~> 1.11, >= 1.11.4)
|
|
6
|
+
jbuilder (~> 2.10)
|
|
6
7
|
|
|
7
8
|
GEM
|
|
8
9
|
remote: https://rubygems.org/
|
|
9
10
|
specs:
|
|
11
|
+
activesupport (6.0.3.4)
|
|
12
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
13
|
+
i18n (>= 0.7, < 2)
|
|
14
|
+
minitest (~> 5.1)
|
|
15
|
+
tzinfo (~> 1.1)
|
|
16
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
|
10
17
|
concurrent-ruby (1.1.7)
|
|
11
18
|
cool.io (1.7.0)
|
|
12
19
|
diff-lcs (1.4.4)
|
|
@@ -21,6 +28,11 @@ GEM
|
|
|
21
28
|
tzinfo-data (~> 1.0)
|
|
22
29
|
yajl-ruby (~> 1.0)
|
|
23
30
|
http_parser.rb (0.6.0)
|
|
31
|
+
i18n (1.8.5)
|
|
32
|
+
concurrent-ruby (~> 1.0)
|
|
33
|
+
jbuilder (2.10.1)
|
|
34
|
+
activesupport (>= 5.0.0)
|
|
35
|
+
minitest (5.14.2)
|
|
24
36
|
msgpack (1.3.3)
|
|
25
37
|
rake (12.3.3)
|
|
26
38
|
rspec (3.10.0)
|
|
@@ -40,17 +52,20 @@ GEM
|
|
|
40
52
|
sigdump (~> 0.2.2)
|
|
41
53
|
sigdump (0.2.4)
|
|
42
54
|
strptime (0.2.5)
|
|
43
|
-
|
|
44
|
-
|
|
55
|
+
thread_safe (0.3.6)
|
|
56
|
+
tzinfo (1.2.7)
|
|
57
|
+
thread_safe (~> 0.1)
|
|
45
58
|
tzinfo-data (1.2020.4)
|
|
46
59
|
tzinfo (>= 1.0.0)
|
|
47
60
|
yajl-ruby (1.4.1)
|
|
61
|
+
zeitwerk (2.4.1)
|
|
48
62
|
|
|
49
63
|
PLATFORMS
|
|
50
64
|
ruby
|
|
51
65
|
|
|
52
66
|
DEPENDENCIES
|
|
53
67
|
RTALogger!
|
|
68
|
+
jbuilder
|
|
54
69
|
rake (~> 12.0)
|
|
55
70
|
rspec (~> 3.0)
|
|
56
71
|
|
data/README.md
CHANGED
|
@@ -22,7 +22,43 @@ Or install it yourself as:
|
|
|
22
22
|
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
require_relative 'log_factory_manager'
|
|
26
|
+
require_relative 'log_factory_repository'
|
|
27
|
+
|
|
28
|
+
controller_name = 'test_controller'
|
|
29
|
+
userID = 5
|
|
30
|
+
|
|
31
|
+
# create log manager instance
|
|
32
|
+
# this could be a global variable declared in application level
|
|
33
|
+
log_manager = RTALogger::LogFactory.log_manager_instance
|
|
34
|
+
|
|
35
|
+
# set log manage application name (hard code)
|
|
36
|
+
log_manager.app_name = 'myTestApp'
|
|
37
|
+
|
|
38
|
+
# load log manager configuration from a json config file
|
|
39
|
+
log_manager.config_use_json_file('rta_logger_config.json')
|
|
40
|
+
|
|
41
|
+
# add log repository to log manager
|
|
42
|
+
#log_manager.propagator.add_log_repository(RTALogger::LogFactory.new_log_repository_console)
|
|
43
|
+
|
|
44
|
+
# add new topic to log manager
|
|
45
|
+
# use this api to get a new log topic instance
|
|
46
|
+
# this api could be called in entry point of each service or class initialize method
|
|
47
|
+
topic = log_manager.add_topic(controller_name)
|
|
48
|
+
|
|
49
|
+
# add log information to log topic
|
|
50
|
+
topic.debug(userID, 'Controller Name=', controller_name, 'debug')
|
|
51
|
+
topic.info(userID, 'Controller Name=', controller_name, 'information')
|
|
52
|
+
topic.warning(userID, 'Controller Name=', controller_name, 'warning')
|
|
53
|
+
topic.error(userID, 'Controller Name=', controller_name, 'error')
|
|
54
|
+
topic.fatal(userID, 'Controller Name=', controller_name, 'fatal')
|
|
55
|
+
topic.unknown(userID, 'Controller Name=', controller_name, 'unknown')
|
|
56
|
+
|
|
57
|
+
# update specific topic log level if necessary
|
|
58
|
+
# log_manager.update_topic_level(controller_name, RTALogger::LogSeverity::INFO)
|
|
59
|
+
|
|
60
|
+
# update all topics log level if necessary
|
|
61
|
+
# log_manager.update_all_topics_log_level(RTALogger::LogSeverity::INFO)
|
|
26
62
|
|
|
27
63
|
## Development
|
|
28
64
|
|
data/RTALogger.gemspec
CHANGED
data/lib/RTALogger.rb
CHANGED
data/lib/RTALogger/version.rb
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
require 'logger'
|
|
3
4
|
|
|
4
5
|
module RTALogger
|
|
5
6
|
# this module generates object instance
|
|
6
7
|
module LogFactory
|
|
7
|
-
def self.new_file_logger(file_path = 'log.txt', period = 'daily', shift_size =
|
|
8
|
+
def self.new_file_logger(file_path = 'log.txt', period = 'daily', shift_size = 1_048_576)
|
|
8
9
|
@ruby_logger = Logger.new(file_path, period, shift_size)
|
|
9
10
|
@ruby_logger.level = Logger::Severity::DEBUG
|
|
10
|
-
@ruby_logger.formatter = proc do |
|
|
11
|
+
@ruby_logger.formatter = proc do |_severity, _datetime, _progname, msg|
|
|
11
12
|
"#{msg}\n"
|
|
12
13
|
end
|
|
13
14
|
@ruby_logger
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative 'log_formatter_text'
|
|
2
|
+
require_relative 'log_formatter_json'
|
|
3
|
+
|
|
4
|
+
module RTALogger
|
|
5
|
+
# Log factory to get new instance of log formatter
|
|
6
|
+
module LogFactory
|
|
7
|
+
def self.log_formatter_default
|
|
8
|
+
RTALogger::LogFormatterJSON.new
|
|
9
|
+
# RTALogger::LogFormatterText.new
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative '
|
|
3
|
+
require_relative 'log_manager'
|
|
4
4
|
|
|
5
5
|
module RTALogger
|
|
6
6
|
# this module generates object instance
|
|
@@ -8,7 +8,5 @@ module RTALogger
|
|
|
8
8
|
def self.log_manager_instance
|
|
9
9
|
RTALogger::LogManager.instance
|
|
10
10
|
end
|
|
11
|
-
|
|
12
|
-
|
|
13
11
|
end
|
|
14
12
|
end
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
6
|
-
#require_relative '../../log_repository_db'
|
|
3
|
+
require_relative 'log_repository_console'
|
|
4
|
+
require_relative 'log_repository_file'
|
|
5
|
+
require_relative 'log_repository_udp'
|
|
7
6
|
|
|
8
7
|
module RTALogger
|
|
9
8
|
# this module generates object instance
|
|
@@ -12,14 +11,14 @@ module RTALogger
|
|
|
12
11
|
LogRepositoryConsole.new
|
|
13
12
|
end
|
|
14
13
|
|
|
15
|
-
def self.new_log_repository_file(file_path = 'log.txt', period = 'daily', shift_size =
|
|
14
|
+
def self.new_log_repository_file(file_path = 'log.txt', period = 'daily', shift_size = 1_048_576)
|
|
16
15
|
LogRepositoryFile.new(file_path, period, shift_size)
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
def self.load_log_repository_file(config_json)
|
|
20
19
|
file_path = config_json['File_Path'].to_s
|
|
21
20
|
period = config_json['Roll_Period'].to_s
|
|
22
|
-
shift_size = config_json['Roll_Size'].nil? ?
|
|
21
|
+
shift_size = config_json['Roll_Size'].nil? ? 1_048_576 : config_json['Roll_Size'].to_i
|
|
23
22
|
::RTALogger::LogFactory.new_log_repository_file(file_path, period, shift_size)
|
|
24
23
|
end
|
|
25
24
|
|
|
@@ -35,9 +34,9 @@ module RTALogger
|
|
|
35
34
|
|
|
36
35
|
def self.create_repository(type, config_json)
|
|
37
36
|
result = nil
|
|
38
|
-
result = new_log_repository_console if type.to_s.
|
|
39
|
-
result = load_log_repository_file(config_json) if type.to_s.
|
|
40
|
-
result = load_log_repository_udp(config_json) if type.to_s.
|
|
37
|
+
result = new_log_repository_console if type.to_s.casecmp('Console').zero?
|
|
38
|
+
result = load_log_repository_file(config_json) if type.to_s.casecmp('File').zero?
|
|
39
|
+
result = load_log_repository_udp(config_json) if type.to_s.casecmp('UDP').zero?
|
|
41
40
|
result
|
|
42
41
|
end
|
|
43
42
|
end
|
data/lib/log_formatter.rb
CHANGED
data/lib/log_formatter_json.rb
CHANGED
|
@@ -2,12 +2,14 @@ require 'jbuilder'
|
|
|
2
2
|
require_relative 'log_formatter'
|
|
3
3
|
|
|
4
4
|
module RTALogger
|
|
5
|
+
# json formatter which receive log_record and
|
|
6
|
+
# returns it's data as json string
|
|
5
7
|
class LogFormatterJSON
|
|
6
8
|
def format(log_record)
|
|
7
9
|
return '' unless log_record
|
|
8
10
|
|
|
9
11
|
jb = Jbuilder.new do |json|
|
|
10
|
-
json.occurred_at log_record.occurred_at.strftime(
|
|
12
|
+
json.occurred_at log_record.occurred_at.strftime('%F %H:%M:%S:%3N')
|
|
11
13
|
json.app_name log_record.app_name
|
|
12
14
|
json.topic_title log_record.topic_title
|
|
13
15
|
json.context_id log_record.context_id
|
data/lib/log_formatter_text.rb
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
require_relative 'log_formatter'
|
|
2
2
|
|
|
3
3
|
module RTALogger
|
|
4
|
+
# text formatter which receive log_record and
|
|
5
|
+
# returns it's data as delimited text string
|
|
4
6
|
class LogFormatterText < LogFormatter
|
|
5
|
-
def format(log_record)
|
|
7
|
+
def format(log_record, delimiter = '|')
|
|
6
8
|
return '' unless log_record
|
|
7
9
|
|
|
8
|
-
result = log_record.occurred_at.strftime(
|
|
9
|
-
result <<
|
|
10
|
-
result <<
|
|
11
|
-
result <<
|
|
12
|
-
result <<
|
|
13
|
-
result <<
|
|
10
|
+
result = log_record.occurred_at.strftime('%F %H:%M:%S:%3N')
|
|
11
|
+
result << delimiter << log_record.app_name
|
|
12
|
+
result << delimiter << log_record.topic_title
|
|
13
|
+
result << delimiter << log_record.context_id
|
|
14
|
+
result << delimiter << log_record.severity
|
|
15
|
+
result << delimiter << log_record.message.join(' ').gsub(delimiter, '$<$')
|
|
14
16
|
|
|
15
17
|
result
|
|
16
18
|
end
|
data/lib/log_manager.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require 'date'
|
|
2
2
|
require 'thread'
|
|
3
3
|
require 'singleton'
|
|
4
|
-
require_relative '
|
|
5
|
-
require_relative '
|
|
6
|
-
require_relative '
|
|
7
|
-
require_relative '
|
|
4
|
+
require_relative 'log_factory_propagator'
|
|
5
|
+
require_relative 'log_factory_repository'
|
|
6
|
+
require_relative 'log_factory_topic'
|
|
7
|
+
require_relative 'log_severity'
|
|
8
8
|
|
|
9
9
|
# the module will contain all logger requirements
|
|
10
10
|
module RTALogger
|
|
@@ -36,16 +36,18 @@ module RTALogger
|
|
|
36
36
|
@flush_scheduler.run
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
def
|
|
40
|
-
config_json =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
@default_log_level = config_json['Log_Severity'] if config_json['Log_Severity'].present?
|
|
45
|
-
@buffer_siz = config_json['Buffer_Size'] if config_json['Buffer_Size'].present?
|
|
46
|
-
@flush_wait_time = config_json['Flush_Wait_Seconds'] if config_json['Flush_Wait_Seconds'].present?
|
|
39
|
+
def config_use_json_file(config_file_name)
|
|
40
|
+
config_json = load_config_from_json_file(config_file_name)
|
|
41
|
+
apply_config(config_json)
|
|
42
|
+
rescue StandardError => e
|
|
43
|
+
puts e.message
|
|
47
44
|
@propagator.drop_all_repositories
|
|
48
|
-
|
|
45
|
+
@propagator.add_log_repository(LogFactory.new_log_repository_console)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def config_use_json_string(config_string)
|
|
49
|
+
config_json = load_config_from_json_string(config_file_name)
|
|
50
|
+
apply_config(config_json)
|
|
49
51
|
rescue StandardError => e
|
|
50
52
|
puts e.message
|
|
51
53
|
@propagator.drop_all_repositories
|
|
@@ -55,6 +57,7 @@ module RTALogger
|
|
|
55
57
|
attr_accessor :enable
|
|
56
58
|
attr_accessor :app_name
|
|
57
59
|
attr_reader :propagator
|
|
60
|
+
attr_reader :default_log_level
|
|
58
61
|
|
|
59
62
|
def add_topic(topic_title, log_level = @default_log_level)
|
|
60
63
|
@topic_semaphore.synchronize {
|
|
@@ -81,10 +84,21 @@ module RTALogger
|
|
|
81
84
|
|
|
82
85
|
private
|
|
83
86
|
|
|
84
|
-
def
|
|
87
|
+
def load_config_from_json_file(config_file_name)
|
|
85
88
|
config_file = File.open config_file_name
|
|
86
89
|
config_json = JSON.load config_file
|
|
87
|
-
config_json = config_json
|
|
90
|
+
config_json = extract_config(config_json)
|
|
91
|
+
config_json
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def load_config_from_json_string(config_string)
|
|
95
|
+
config_json = JSON.parse(config_string)
|
|
96
|
+
config_json = extract_config(config_json)
|
|
97
|
+
config_json
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def extract_config(json_data)
|
|
101
|
+
config_json = json_data['RTALogger']
|
|
88
102
|
raise 'RTALogger configuration not found!' unless config_json
|
|
89
103
|
raise 'Log_Managers section does not exists json configuration' unless config_json['Log_Managers']
|
|
90
104
|
raise 'No config manager defined in json configuration' unless config_json['Log_Managers'].count.positive?
|
|
@@ -97,6 +111,17 @@ module RTALogger
|
|
|
97
111
|
config_json
|
|
98
112
|
end
|
|
99
113
|
|
|
114
|
+
def apply_config(config_json)
|
|
115
|
+
raise 'json config not available' unless config_json
|
|
116
|
+
@enable = config_json['Enable'].nil? ? true : config_json['Enable']
|
|
117
|
+
@app_name = config_json['App_Name'] if config_json['App_Name'].present?
|
|
118
|
+
@default_log_level = config_json['Log_Severity'] if config_json['Log_Severity'].present?
|
|
119
|
+
@buffer_siz = config_json['Buffer_Size'] if config_json['Buffer_Size'].present?
|
|
120
|
+
@flush_wait_time = config_json['Flush_Wait_Seconds'] if config_json['Flush_Wait_Seconds'].present?
|
|
121
|
+
@propagator.drop_all_repositories
|
|
122
|
+
config_json['Repos']&.each { |item| @propagator.load_log_repository(item) }
|
|
123
|
+
end
|
|
124
|
+
|
|
100
125
|
def initialize_flush_scheduler
|
|
101
126
|
@flush_scheduler = Thread.new do
|
|
102
127
|
loop do
|
data/lib/log_propagator.rb
CHANGED
|
@@ -1,45 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
@
|
|
9
|
-
@
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
log_repository
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
end
|
|
1
|
+
require_relative 'log_repository'
|
|
2
|
+
|
|
3
|
+
module RTALogger
|
|
4
|
+
# propagate log records to multiple log repositories
|
|
5
|
+
class LogPropagator
|
|
6
|
+
def initialize
|
|
7
|
+
@semaphore = Mutex.new
|
|
8
|
+
@log_records = []
|
|
9
|
+
@log_repositories = []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def add_log(log_record)
|
|
13
|
+
@semaphore.synchronize { @log_records.push(log_record.dup) }
|
|
14
|
+
end
|
|
15
|
+
|
|
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)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def load_log_repository(config_json)
|
|
22
|
+
type = config_json['Type']
|
|
23
|
+
return if type.to_s.strip.empty?
|
|
24
|
+
enable = config_json['Enable'].nil? ? true : config_json['Enable']
|
|
25
|
+
return unless enable
|
|
26
|
+
|
|
27
|
+
log_repository = ::RTALogger::LogFactory.create_repository(type, config_json)
|
|
28
|
+
add_log_repository(log_repository)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def drop_all_repositories
|
|
32
|
+
@semaphore.synchronize { @log_repositories.clear }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def propagate
|
|
36
|
+
@semaphore.synchronize do
|
|
37
|
+
@log_repositories.each do |log_repository|
|
|
38
|
+
log_repository.add_log_records(@log_records)
|
|
39
|
+
end
|
|
40
|
+
@log_records.clear
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/lib/log_record.rb
CHANGED
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
require 'date'
|
|
2
|
-
|
|
3
|
-
module RTALogger
|
|
4
|
-
# log data structure
|
|
5
|
-
class LogRecord
|
|
6
|
-
def initialize(log_topic, context_id, severity, *message)
|
|
7
|
-
@log_topic = log_topic
|
|
8
|
-
@context_id = context_id
|
|
9
|
-
@severity = severity
|
|
10
|
-
@message = message
|
|
11
|
-
@occurred_at = DateTime.now
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
attr_reader :context_id
|
|
15
|
-
attr_reader :severity
|
|
16
|
-
attr_reader :message
|
|
17
|
-
attr_reader :occurred_at
|
|
18
|
-
|
|
19
|
-
def app_name
|
|
20
|
-
@log_topic.log_manager.app_name
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def topic_title
|
|
24
|
-
@log_topic.topic_title
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
1
|
+
require 'date'
|
|
2
|
+
|
|
3
|
+
module RTALogger
|
|
4
|
+
# log data structure
|
|
5
|
+
class LogRecord
|
|
6
|
+
def initialize(log_topic, context_id, severity, *message)
|
|
7
|
+
@log_topic = log_topic
|
|
8
|
+
@context_id = context_id
|
|
9
|
+
@severity = severity
|
|
10
|
+
@message = message
|
|
11
|
+
@occurred_at = DateTime.now
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
attr_reader :context_id
|
|
15
|
+
attr_reader :severity
|
|
16
|
+
attr_reader :message
|
|
17
|
+
attr_reader :occurred_at
|
|
18
|
+
|
|
19
|
+
def app_name
|
|
20
|
+
@log_topic.log_manager.app_name
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def topic_title
|
|
24
|
+
@log_topic.topic_title
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/log_repository.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
require_relative 'log_repository'
|
|
2
|
-
require_relative '
|
|
2
|
+
require_relative 'log_factory_log_formatter'
|
|
3
3
|
|
|
4
4
|
module RTALogger
|
|
5
5
|
# show log items on console out put
|
|
@@ -7,7 +7,7 @@ module RTALogger
|
|
|
7
7
|
def initialize
|
|
8
8
|
super
|
|
9
9
|
|
|
10
|
-
@formatter = RTALogger::LogFactory
|
|
10
|
+
@formatter = RTALogger::LogFactory.log_formatter_default
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
protected
|
|
@@ -18,6 +18,5 @@ module RTALogger
|
|
|
18
18
|
end
|
|
19
19
|
super
|
|
20
20
|
end
|
|
21
|
-
|
|
22
21
|
end
|
|
23
22
|
end
|
data/lib/log_repository_file.rb
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
require 'logger'
|
|
2
2
|
require_relative 'log_repository'
|
|
3
|
-
require_relative '
|
|
4
|
-
require_relative '
|
|
3
|
+
require_relative 'log_factory_file_logger'
|
|
4
|
+
require_relative 'log_factory_log_formatter'
|
|
5
5
|
|
|
6
6
|
module RTALogger
|
|
7
7
|
# show log items on console out put
|
|
8
8
|
class LogRepositoryFile < LogRepository
|
|
9
|
-
def initialize(file_path = 'log.txt', period = 'daily', shift_size =
|
|
9
|
+
def initialize(file_path = 'log.txt', period = 'daily', shift_size = 1_048_576)
|
|
10
10
|
super()
|
|
11
11
|
@file_logger = RTALogger::LogFactory.new_file_logger(file_path, period, shift_size)
|
|
12
|
-
@formatter = RTALogger::LogFactory
|
|
12
|
+
@formatter = RTALogger::LogFactory.log_formatter_default
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
protected
|
|
@@ -20,6 +20,5 @@ module RTALogger
|
|
|
20
20
|
end
|
|
21
21
|
super
|
|
22
22
|
end
|
|
23
|
-
|
|
24
23
|
end
|
|
25
24
|
end
|
data/lib/log_repository_udp.rb
CHANGED
|
@@ -15,11 +15,10 @@ module RTALogger
|
|
|
15
15
|
semaphore.synchronize do
|
|
16
16
|
u1 = UDPSocket.new
|
|
17
17
|
u1.bind(@host, @port)
|
|
18
|
-
@log_records.each { |log_record| u1.send log_record.to_s, 0, @host, @port}
|
|
18
|
+
@log_records.each { |log_record| u1.send log_record.to_s, 0, @host, @port }
|
|
19
19
|
u1.close
|
|
20
20
|
end
|
|
21
21
|
super
|
|
22
22
|
end
|
|
23
|
-
|
|
24
23
|
end
|
|
25
24
|
end
|
data/lib/log_severity.rb
CHANGED
|
@@ -9,7 +9,7 @@ module RTALogger
|
|
|
9
9
|
WARN = 2
|
|
10
10
|
# A handleable error condition.
|
|
11
11
|
ERROR = 3
|
|
12
|
-
# An
|
|
12
|
+
# An un-handleable error that results in a program crash.
|
|
13
13
|
FATAL = 4
|
|
14
14
|
# An unknown message that should always be logged.
|
|
15
15
|
UNKNOWN = 5
|
data/lib/log_topic.rb
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require_relative './log_severity'
|
|
4
|
-
require_relative 'factory/origin/log_factory_record'
|
|
1
|
+
require_relative 'log_severity'
|
|
2
|
+
require_relative 'log_factory_record'
|
|
5
3
|
|
|
6
4
|
module RTALogger
|
|
7
|
-
# the main class to logging data
|
|
5
|
+
# the main class to logging data as topic
|
|
8
6
|
class LogTopic
|
|
9
7
|
include LogSeverity
|
|
10
8
|
include RTALogger::LogFactory
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"RTALogger":
|
|
3
|
+
{
|
|
4
|
+
"Default_Manager": "Develop",
|
|
5
|
+
"Log_Managers":
|
|
6
|
+
[
|
|
7
|
+
{
|
|
8
|
+
"Manager_Name": "Develop",
|
|
9
|
+
"Enable": true,
|
|
10
|
+
"App_Name": "TestApp",
|
|
11
|
+
"Log_Severity": 2,
|
|
12
|
+
"Buffer_Size": 100,
|
|
13
|
+
"Flush_Wait_Seconds": 15,
|
|
14
|
+
"Formatter" : "JSON",
|
|
15
|
+
"Repos":
|
|
16
|
+
[
|
|
17
|
+
{
|
|
18
|
+
"Enable": true,
|
|
19
|
+
"Type": "Console"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"Enable": false,
|
|
23
|
+
"Type": "File",
|
|
24
|
+
"File_Path": "../../log/log.txt",
|
|
25
|
+
"Roll_Period": "daily",
|
|
26
|
+
"Roll_Size": "1048576"
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
data/lib/sample.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require_relative 'log_factory_manager'
|
|
2
|
+
require_relative 'log_factory_repository'
|
|
3
|
+
|
|
4
|
+
controller_name = 'test_controller'
|
|
5
|
+
userID = 5
|
|
6
|
+
|
|
7
|
+
# create log manager instance
|
|
8
|
+
# this could be a global variable declared in application level
|
|
9
|
+
log_manager = RTALogger::LogFactory.log_manager_instance
|
|
10
|
+
|
|
11
|
+
# set log manage application name (hard code)
|
|
12
|
+
log_manager.app_name = 'myTestApp'
|
|
13
|
+
|
|
14
|
+
# load log manager configuration from a json config file
|
|
15
|
+
log_manager.config_use_json_file('rta_logger_config.json')
|
|
16
|
+
|
|
17
|
+
# add log repository to log manager
|
|
18
|
+
#log_manager.propagator.add_log_repository(RTALogger::LogFactory.new_log_repository_console)
|
|
19
|
+
|
|
20
|
+
# add new topic to log manager
|
|
21
|
+
# use this api to get a new log topic instance
|
|
22
|
+
# this api could be called in entry point of each service or class initialize method
|
|
23
|
+
topic = log_manager.add_topic(controller_name)
|
|
24
|
+
|
|
25
|
+
# add log information to log topic
|
|
26
|
+
topic.debug(userID, 'Controller Name=', controller_name, 'debug')
|
|
27
|
+
topic.info(userID, 'Controller Name=', controller_name, 'information')
|
|
28
|
+
topic.warning(userID, 'Controller Name=', controller_name, 'warning')
|
|
29
|
+
topic.error(userID, 'Controller Name=', controller_name, 'error')
|
|
30
|
+
topic.fatal(userID, 'Controller Name=', controller_name, 'fatal')
|
|
31
|
+
topic.unknown(userID, 'Controller Name=', controller_name, 'unknown')
|
|
32
|
+
|
|
33
|
+
# update specific topic log level if necessary
|
|
34
|
+
# log_manager.update_topic_level(controller_name, RTALogger::LogSeverity::INFO)
|
|
35
|
+
|
|
36
|
+
# update all topics log level if necessary
|
|
37
|
+
# log_manager.update_all_topics_log_level(RTALogger::LogSeverity::INFO)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: RTALogger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Babak Bahreini, RTA Backend Team
|
|
@@ -30,6 +30,20 @@ dependencies:
|
|
|
30
30
|
- - ">="
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
32
|
version: 1.11.4
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: jbuilder
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '2.10'
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '2.10'
|
|
33
47
|
description: RTA Log Manager has been designed and implemented to provide standard
|
|
34
48
|
logging API for developers.This prevents chaos in log data format. Also provide
|
|
35
49
|
multiple extendable log repositories including wrapping existing loggers, like 'Fluentd'
|
|
@@ -42,6 +56,12 @@ extensions: []
|
|
|
42
56
|
extra_rdoc_files: []
|
|
43
57
|
files:
|
|
44
58
|
- ".gitignore"
|
|
59
|
+
- ".idea/.gitignore"
|
|
60
|
+
- ".idea/.rakeTasks"
|
|
61
|
+
- ".idea/RTALogger.iml"
|
|
62
|
+
- ".idea/misc.xml"
|
|
63
|
+
- ".idea/modules.xml"
|
|
64
|
+
- ".idea/vcs.xml"
|
|
45
65
|
- ".rspec"
|
|
46
66
|
- ".travis.yml"
|
|
47
67
|
- Gemfile
|
|
@@ -54,13 +74,13 @@ files:
|
|
|
54
74
|
- bin/setup
|
|
55
75
|
- lib/RTALogger.rb
|
|
56
76
|
- lib/RTALogger/version.rb
|
|
57
|
-
- lib/
|
|
58
|
-
- lib/
|
|
59
|
-
- lib/
|
|
60
|
-
- lib/
|
|
61
|
-
- lib/
|
|
62
|
-
- lib/
|
|
63
|
-
- lib/
|
|
77
|
+
- lib/log_factory_file_logger.rb
|
|
78
|
+
- lib/log_factory_log_formatter.rb
|
|
79
|
+
- lib/log_factory_manager.rb
|
|
80
|
+
- lib/log_factory_propagator.rb
|
|
81
|
+
- lib/log_factory_record.rb
|
|
82
|
+
- lib/log_factory_repository.rb
|
|
83
|
+
- lib/log_factory_topic.rb
|
|
64
84
|
- lib/log_formatter.rb
|
|
65
85
|
- lib/log_formatter_json.rb
|
|
66
86
|
- lib/log_formatter_text.rb
|
|
@@ -72,9 +92,9 @@ files:
|
|
|
72
92
|
- lib/log_repository_file.rb
|
|
73
93
|
- lib/log_repository_udp.rb
|
|
74
94
|
- lib/log_severity.rb
|
|
75
|
-
- lib/log_test.rb
|
|
76
|
-
- lib/log_test_db.rb
|
|
77
95
|
- lib/log_topic.rb
|
|
96
|
+
- lib/rta_logger_config.json
|
|
97
|
+
- lib/sample.rb
|
|
78
98
|
homepage: https://github.com/BBahrainy/RTALogger.git
|
|
79
99
|
licenses:
|
|
80
100
|
- MIT
|
data/lib/log_test.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
#require 'logger'
|
|
2
|
-
#require 'date'
|
|
3
|
-
require_relative 'factory/origin/log_factory_manager'
|
|
4
|
-
require_relative 'factory/origin/log_factory_repository'
|
|
5
|
-
require 'socket'
|
|
6
|
-
|
|
7
|
-
controller_name = 'test_controller'
|
|
8
|
-
userID = 5
|
|
9
|
-
|
|
10
|
-
log_manager = RTALogger::LogFactory.log_manager_instance
|
|
11
|
-
log_manager.app_name = 'myTestApp'
|
|
12
|
-
log_manager.config('../../../config/rta_logger_config.json')
|
|
13
|
-
#log_manager.propagator.add_log_repository(RTALogger::LogFactory.new_log_repository_console)
|
|
14
|
-
#log_manager.propagator.add_log_repository(RTALogger::LogFactory.new_log_repository_file('../../../log/log.txt'))
|
|
15
|
-
#log_manager.propagator.add_log_repository(RTALogger::LogFactory.new_log_repository_udp('127.0.0.1', 4913))
|
|
16
|
-
# log_manager.propagator.add_log_repository(RTALogger::LogFactory.new_log_repository_db)
|
|
17
|
-
|
|
18
|
-
topic = log_manager.add_topic(controller_name)
|
|
19
|
-
|
|
20
|
-
topic.info(userID, 'Controller Name=', controller_name, 'Called by client 1')
|
|
21
|
-
|
|
22
|
-
#logger.level = RTALogger::LogSeverity::INFO
|
|
23
|
-
#manager.update_topic_level(controller_name, RTALogger::LogSeverity::INFO)
|
|
24
|
-
|
|
25
|
-
log_manager.update_all_topics_log_level(RTALogger::LogSeverity::INFO)
|
|
26
|
-
|
|
27
|
-
topic.info(userID, 'Controller Name|', controller_name, 'Called by client |2|')
|
|
28
|
-
topic.error(userID, 'Controller Name=', controller_name, 'Called by client 3')
|
|
29
|
-
|
|
30
|
-
#sleep(10)
|
|
31
|
-
|
|
32
|
-
topic.info(userID, 'Controller Name=', controller_name, 'Called by client |4|')
|
|
33
|
-
topic.fatal(userID, 'Controller Name=', controller_name, 'Called by client 5')
|
|
34
|
-
topic.info(userID, 'Controller Name=', controller_name, 'Called by client 6')
|
|
35
|
-
|
|
36
|
-
#ruby_logger = Logger.new(STDOUT)
|
|
37
|
-
#ruby_logger.formatter = proc do |severity, datetime, progname, msg|
|
|
38
|
-
# "NICE: #{msg}\n"
|
|
39
|
-
#end
|
|
40
|
-
#ruby_logger.info('logged by ruby default logger')
|
|
41
|
-
|
data/lib/log_test_db.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
#require 'active_record'
|
|
2
|
-
#require 'pg'
|
|
3
|
-
# require 'active_record' # uncomment for not Rails environment
|
|
4
|
-
|
|
5
|
-
#ActiveRecord::Base.establish_connection(:adapter => "postgresql",
|
|
6
|
-
# :username => "postgre",
|
|
7
|
-
# :database => "rails_test_development")
|
|
8
|
-
|
|
9
|
-
require 'log_record'
|
|
10
|
-
|
|
11
|
-
module RTALogger
|
|
12
|
-
class LogFormatter
|
|
13
|
-
def initialize(log_record,
|
|
14
|
-
delimiter = '|',
|
|
15
|
-
time_format = '%Y-%m-%d %H:%M:%S.%3N')
|
|
16
|
-
@log_record = log_record
|
|
17
|
-
@delimiter = delimiter
|
|
18
|
-
@time_format = time_format
|
|
19
|
-
@format_chance = format_chance
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
attr_accessor :log_record
|
|
23
|
-
attr_accessor :delimiter
|
|
24
|
-
attr_accessor :time_format
|
|
25
|
-
|
|
26
|
-
def self.default_formatter(log_record)
|
|
27
|
-
LogFormatter.new(log_record)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def to_s
|
|
31
|
-
result = "#{occurred_at}#{@delimiter}#{@log_record.app_name}#{@delimiter}"
|
|
32
|
-
result << "#{@log_record.topic_title}#{@delimiter}#{@log_record.context_id}"
|
|
33
|
-
result << "#{@delimiter}#{@log_record.severity}#{@delimiter}#{log_message}"
|
|
34
|
-
|
|
35
|
-
if @format_chance
|
|
36
|
-
result unless @format_chance.call(occurred_at,
|
|
37
|
-
@log_record.app_name,
|
|
38
|
-
@log_record.topic_title,
|
|
39
|
-
@log_record.context_id,
|
|
40
|
-
@log_record.severity,
|
|
41
|
-
log_message)
|
|
42
|
-
end
|
|
43
|
-
else
|
|
44
|
-
result
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
protected
|
|
49
|
-
|
|
50
|
-
def log_message
|
|
51
|
-
@log_record.message.join.gsub(delimiter, '&dlm&')
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def occurred_at
|
|
55
|
-
@log_record.occurred_at.strftime(time_format)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|