Skip to content

Commit 0bd355a

Browse files
jeffladirayKevin Prettre
andauthored
feat(logger): allow the logger to be configurable by the parent application (#467)
Co-authored-by: Kevin Prettre <[email protected]>
1 parent ae409b7 commit 0bd355a

File tree

3 files changed

+48
-13
lines changed

3 files changed

+48
-13
lines changed

config/initializers/logger.rb

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,24 @@ module ForestLiana
33
class Logger
44
class << self
55
def log
6-
logger = ::Logger.new(STDOUT)
7-
logger_colors = {
8-
DEBUG: 34,
9-
WARN: 33,
10-
ERROR: 31,
11-
INFO: 37
12-
}
6+
if ForestLiana.logger != nil
7+
logger = ForestLiana.logger
8+
else
9+
logger = ::Logger.new(STDOUT)
10+
logger_colors = {
11+
DEBUG: 34,
12+
WARN: 33,
13+
ERROR: 31,
14+
INFO: 37
15+
}
1316

14-
logger.formatter = proc do |severity, datetime, progname, message|
15-
displayed_message = "[#{datetime.to_s(:db)}] Forest 🌳🌳🌳 " \
16-
"#{message}\n"
17-
"\e[#{logger_colors[severity.to_sym]}m#{displayed_message}\033[0m"
17+
logger.formatter = proc do |severity, datetime, progname, message|
18+
displayed_message = "[#{datetime.to_s(:db)}] Forest 🌳🌳🌳 " \
19+
"#{message}\n"
20+
"\e[#{logger_colors[severity.to_sym]}m#{displayed_message}\033[0m"
21+
end
22+
logger
1823
end
19-
20-
logger
2124
end
2225
end
2326
end

lib/forest_liana.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ module UserSpace
2727
mattr_accessor :user_class_name
2828
mattr_accessor :names_overriden
2929
mattr_accessor :meta
30+
mattr_accessor :logger
3031
# TODO: Remove once lianas prior to 2.0.0 are not supported anymore.
3132
mattr_accessor :names_old_overriden
3233

@@ -38,6 +39,7 @@ module UserSpace
3839
self.user_class_name = nil
3940
self.names_overriden = {}
4041
self.meta = {}
42+
self.logger = nil
4143

4244
@config_dir = 'lib/forest_liana/**/*.rb'
4345

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module ForestLiana
2+
describe Logger do
3+
describe 'self.log' do
4+
describe 'with a logger overload' do
5+
it 'should return the given logger' do
6+
logger = ActiveSupport::Logger.new($stdout)
7+
logger.formatter = proc do |severity, datetime, progname, msg|
8+
{:message => msg}.to_json
9+
end
10+
ForestLiana.logger = logger
11+
12+
expect(Logger.log.is_a?(ActiveSupport::Logger)).to be_truthy
13+
expect { Logger.log.error "[error] override logger" }.to output({:message => "[error] override logger"}.to_json).to_stdout_from_any_process
14+
expect { Logger.log.info "[info] override logger" }.to output({:message => "[info] override logger"}.to_json).to_stdout_from_any_process
15+
end
16+
end
17+
18+
describe 'with no logger overload' do
19+
it 'should return an instance of ::Logger' do
20+
ForestLiana.logger = nil
21+
22+
expect(Logger.log.is_a?(::Logger)).to be_truthy
23+
# RegExp is used to check for the forestadmin logger format
24+
expect { Logger.log.error "[error] default logger" }.to output(/\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\] Forest .* \[error\]/).to_stdout_from_any_process
25+
expect { Logger.log.info "[info] default logger" }.to output(/\[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\] Forest .* \[info\]/).to_stdout_from_any_process
26+
end
27+
end
28+
end
29+
end
30+
end

0 commit comments

Comments
 (0)