Class: WifiWand::LogFileManager
- Inherits:
-
Object
- Object
- WifiWand::LogFileManager
- Defined in:
- lib/wifi_wand/services/log_file_manager.rb
Overview
LogFileManager handles writing timestamped events to a log file.
Responsibilities:
- Opens log file in append mode (creates if it does not exist)
- Creates parent directories for the log file path if needed
- Writes messages with timestamps
- Flushes after each write to ensure data is written to disk
- Closes file handle properly
Design notes:
- Parent directories are created before opening the log file
- File open, write, and close errors are propagated to the caller
- Each write is flushed immediately for real-time log visibility
Constant Summary collapse
- DEFAULT_LOG_FILE =
'wifiwand-events.log'
Instance Attribute Summary collapse
-
#log_file_path ⇒ Object
readonly
Returns the value of attribute log_file_path.
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize(log_file_path: nil, runtime_config: nil, **kwargs) ⇒ LogFileManager
constructor
A new instance of LogFileManager.
- #out_stream ⇒ Object
- #verbose? ⇒ Boolean
-
#write(message) ⇒ Object
Propagate write failures so EventLogger can either fall back to stdout or stop.
Constructor Details
#initialize(log_file_path: nil, runtime_config: nil, **kwargs) ⇒ LogFileManager
Returns a new instance of LogFileManager.
28 29 30 31 32 33 34 35 |
# File 'lib/wifi_wand/services/log_file_manager.rb', line 28 def initialize(log_file_path: nil, runtime_config: nil, **kwargs) @log_file_path = log_file_path || DEFAULT_LOG_FILE @runtime_config = runtime_config || RuntimeConfig.new(verbose: kwargs[:verbose], out_stream: $stdout) @verbose_override = kwargs[:verbose] if kwargs.key?(:verbose) @out_stream_override = kwargs[:out_stream] if kwargs.key?(:out_stream) @file_handle = nil setup_log_file end |
Instance Attribute Details
#log_file_path ⇒ Object (readonly)
Returns the value of attribute log_file_path.
25 26 27 |
# File 'lib/wifi_wand/services/log_file_manager.rb', line 25 def log_file_path @log_file_path end |
Instance Method Details
#close ⇒ Object
55 56 57 58 59 60 |
# File 'lib/wifi_wand/services/log_file_manager.rb', line 55 def close return unless @file_handle @file_handle.close @file_handle = nil end |
#out_stream ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/wifi_wand/services/log_file_manager.rb', line 37 def out_stream if instance_variable_defined?(:@out_stream_override) @out_stream_override else runtime_config.out_stream end end |
#verbose? ⇒ Boolean
96 97 98 99 100 101 102 |
# File 'lib/wifi_wand/services/log_file_manager.rb', line 96 def verbose? if instance_variable_defined?(:@verbose_override) @verbose_override else runtime_config.verbose end end |
#write(message) ⇒ Object
Propagate write failures so EventLogger can either fall back to stdout or stop.
46 47 48 49 50 51 52 53 |
# File 'lib/wifi_wand/services/log_file_manager.rb', line 46 def write() raise WifiWand::LogWriteError, 'Log file is not available' unless @file_handle @file_handle.puts() @file_handle.flush rescue IOError, SystemCallError => e raise WifiWand::LogWriteError, "Failed to write to log file #{@log_file_path}: #{e.}" end |