Class: Makit::Logging::Sinks::UnifiedFileSink
- Defined in:
- lib/makit/logging/sinks/unified_file_sink.rb
Overview
Unified file sink with configurable multiple outputs
This sink replaces the need for multiple separate sinks by providing a single, highly configurable sink that can write to multiple files with different formats, filtering, and options. It supports console output, file logging, and structured logging through configuration.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#configurations ⇒ Array<Hash>
readonly
List of output configurations.
Instance Method Summary collapse
-
#call(log_request) {|LogRequest| ... } ⇒ LogRequest
Execute sink logic to write log entry to configured outputs.
-
#config ⇒ Hash
Get sink configuration.
-
#initialize(configurations: []) ⇒ UnifiedFileSink
constructor
Initialize unified file sink.
Methods inherited from Base
Constructor Details
#initialize(configurations: []) ⇒ UnifiedFileSink
Initialize unified file sink
55 56 57 58 59 60 61 62 63 |
# File 'lib/makit/logging/sinks/unified_file_sink.rb', line 55 def initialize(configurations: []) @configurations = validate_configurations(configurations) @formatters = {} @files = {} # Pre-initialize formatters and files initialize_formatters initialize_files end |
Instance Attribute Details
#configurations ⇒ Array<Hash> (readonly)
Returns list of output configurations.
50 51 52 |
# File 'lib/makit/logging/sinks/unified_file_sink.rb', line 50 def configurations @configurations end |
Instance Method Details
#call(log_request) {|LogRequest| ... } ⇒ LogRequest
Execute sink logic to write log entry to configured outputs
71 72 73 74 75 |
# File 'lib/makit/logging/sinks/unified_file_sink.rb', line 71 def call(log_request, &block) write_to_outputs(log_request) block&.call(log_request) if block_given? log_request end |
#config ⇒ Hash
Get sink configuration
80 81 82 83 84 85 86 |
# File 'lib/makit/logging/sinks/unified_file_sink.rb', line 80 def config { name: self.class.name.split("::").last, configurations_count: @configurations.length, configurations: @configurations.map { |config| sanitize_config(config) }, } end |