Skip to content

Commit 16e0497

Browse files
committed
feat(logger): allow overriding STDOUT levels
1 parent 92ac238 commit 16e0497

3 files changed

Lines changed: 18 additions & 3 deletions

File tree

shard.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: placeos-driver
2-
version: 7.18.3
2+
version: 7.19.0
33

44
dependencies:
55
action-controller:

src/placeos-driver/driver_manager.cr

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ require "ipaddress"
44
class PlaceOS::Driver::DriverManager
55
def initialize(@module_id : String, @model : DriverModel, logger_io = STDOUT, subscriptions = nil, edge_driver = false)
66
@settings = Settings.new @model.settings
7-
@logger = PlaceOS::Driver::Log.new(@module_id, logger_io)
7+
log_level = (@settings.get { setting?(::Log::Severity, :persistent_log_level) } || ::Log::Severity::Error) rescue ::Log::Severity::Error
8+
9+
@logger = PlaceOS::Driver::Log.new(@module_id, logger_io, severity: log_level)
810
@queue = Queue.new(@logger) { |state| connection(state) }
911
@schedule = PlaceOS::Driver::Proxy::Scheduler.new(@logger)
1012
@subscriptions = edge_driver ? nil : Proxy::Subscriptions.new(subscriptions || Subscriptions.new, @logger)
@@ -153,6 +155,10 @@ class PlaceOS::Driver::DriverManager
153155
driver.on_update
154156
rescue error
155157
logger.error(exception: error) { "during settings update of #{@driver.class} (#{@module_id})" }
158+
ensure
159+
# set any new persistent log levels
160+
log_level = (@settings.get { setting?(::Log::Severity, :persistent_log_level) } || ::Log::Severity::Error) rescue ::Log::Severity::Error
161+
@logger.override_io_severity(log_level)
156162
end
157163

158164
def execute(json)

src/placeos-driver/logger.cr

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,22 @@ class PlaceOS::Driver
5252
getter io_backend : ::Log::IOBackend
5353
getter protocol_backend : ProtocolBackend
5454
getter debugging : Bool
55+
getter io_severity : ::Log::Severity
5556

5657
def debugging=(value : Bool)
5758
@debugging = value
5859

5960
# Don't worry it's not really an append, it's updating a hash with the
6061
# backend as the key, so this is a clean update
6162
@broadcast_backend.append(@protocol_backend, value ? ::Log::Severity::Debug : ::Log::Severity::None)
62-
self.level = value ? ::Log::Severity::Debug : ::Log::Severity::Error
63+
self.level = value ? ::Log::Severity::Debug : @io_severity
64+
end
65+
66+
def override_io_severity(severity : ::Log::Severity)
67+
@io_severity = severity
68+
# Don't worry it's not really an append, it's updating a hash
69+
@broadcast_backend.append(@io_backend, severity)
70+
self.level = @debugging ? ::Log::Severity::Debug : severity
6371
end
6472

6573
def initialize(
@@ -69,6 +77,7 @@ class PlaceOS::Driver
6977
severity : ::Log::Severity = ::Log::Severity::Error,
7078
)
7179
@debugging = false
80+
@io_severity = severity
7281

7382
# Create a Driver protocol log backend
7483
@protocol_backend = ProtocolBackend.new(protocol: @protocol)

0 commit comments

Comments
 (0)