smart_message 0.0.16 → 0.0.17
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/CHANGELOG.md +64 -0
- data/Gemfile.lock +4 -4
- data/README.md +10 -6
- data/docs/guides/transport-selection.md +361 -0
- data/docs/reference/transports.md +42 -18
- data/docs/transports/file-transport.md +535 -0
- data/docs/transports/multi-transport.md +1 -1
- data/docs/transports/redis-transport.md +1 -1
- data/docs/transports/stdout-transport.md +580 -0
- data/examples/memory/06_stdout_publish_only.rb +70 -97
- data/lib/smart_message/transport/file_operations.rb +39 -7
- data/lib/smart_message/transport/file_transport.rb +5 -2
- data/lib/smart_message/transport/stdout_transport.rb +5 -93
- data/lib/smart_message/version.rb +1 -1
- data/mkdocs.yml +4 -5
- metadata +4 -2
- data/examples/memory/log/demo_app.log.1 +0 -100
@@ -3,13 +3,13 @@
|
|
3
3
|
#
|
4
4
|
# STDOUT Transport Example - Publish Only
|
5
5
|
#
|
6
|
-
# This example demonstrates the STDOUT transport
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# This example demonstrates the STDOUT transport with different formats
|
7
|
+
# using a single message class that can be configured with different
|
8
|
+
# transport instances.
|
9
9
|
|
10
10
|
require_relative '../../lib/smart_message'
|
11
11
|
|
12
|
-
puts "=== SmartMessage Example: STDOUT Transport
|
12
|
+
puts "=== SmartMessage Example: STDOUT Transport Format Demonstrations ==="
|
13
13
|
puts
|
14
14
|
|
15
15
|
# Configure SmartMessage for this example
|
@@ -18,128 +18,101 @@ SmartMessage.configure do |config|
|
|
18
18
|
config.log_level = :warn # Reduce noise
|
19
19
|
end
|
20
20
|
|
21
|
-
# Define a
|
22
|
-
class
|
23
|
-
description "
|
24
|
-
|
25
|
-
property :
|
26
|
-
description: "
|
27
|
-
property :
|
28
|
-
description: "
|
29
|
-
|
30
|
-
|
31
|
-
property :timestamp,
|
32
|
-
default: -> { Time.now.iso8601 },
|
33
|
-
description: "ISO8601 timestamp of when log was generated"
|
34
|
-
property :context,
|
35
|
-
description: "Optional additional context data"
|
36
|
-
|
37
|
-
# Configure to use STDOUT transport (publish-only)
|
21
|
+
# Define a simple message class for format demonstration
|
22
|
+
class DemoMessage < SmartMessage::Base
|
23
|
+
description "Simple demonstration message for format testing"
|
24
|
+
|
25
|
+
property :first_name,
|
26
|
+
description: "Person's first name"
|
27
|
+
property :last_name,
|
28
|
+
description: "Person's last name"
|
29
|
+
|
30
|
+
# Default config - will be overridden with transport instance replacement
|
38
31
|
config do
|
39
32
|
transport SmartMessage::Transport::StdoutTransport.new
|
40
|
-
from '
|
33
|
+
from 'demo-service'
|
41
34
|
end
|
42
35
|
end
|
43
36
|
|
44
|
-
|
45
|
-
|
46
|
-
description "System metrics published to STDOUT for monitoring ingestion"
|
47
|
-
|
48
|
-
property :metric_name,
|
49
|
-
description: "Name of the metric (e.g., 'cpu_usage', 'memory_usage')"
|
50
|
-
property :value,
|
51
|
-
description: "Numeric value of the metric"
|
52
|
-
property :unit,
|
53
|
-
description: "Unit of measurement (%, MB, requests/sec, etc.)"
|
54
|
-
property :tags,
|
55
|
-
description: "Hash of tags for metric categorization"
|
56
|
-
property :timestamp,
|
57
|
-
default: -> { Time.now.to_i },
|
58
|
-
description: "Unix timestamp of metric collection"
|
37
|
+
puts "🎨 Example 1: Pretty Format (:pretty) - 1 message"
|
38
|
+
puts "=" * 60
|
59
39
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
40
|
+
# Create a simple message for pretty formatting
|
41
|
+
message_data = {
|
42
|
+
first_name: "Alice",
|
43
|
+
last_name: "Johnson"
|
44
|
+
}
|
65
45
|
|
66
|
-
|
67
|
-
|
46
|
+
# Replace the message's transport with :pretty format
|
47
|
+
message = DemoMessage.new(**message_data)
|
48
|
+
message.transport SmartMessage::Transport::StdoutTransport.new(format: :pretty)
|
49
|
+
message.publish
|
68
50
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
},
|
51
|
+
puts
|
52
|
+
puts
|
53
|
+
puts "📋 Example 2: JSONL Format (:jsonl) - 2 messages"
|
54
|
+
puts "=" * 60
|
55
|
+
|
56
|
+
# Create two simple messages for JSONL format
|
57
|
+
jsonl_messages = [
|
77
58
|
{
|
78
|
-
|
79
|
-
|
80
|
-
message: "Payment processing took longer than expected",
|
81
|
-
context: { order_id: "ORD-001", processing_time_ms: 5500 }
|
59
|
+
first_name: "Bob",
|
60
|
+
last_name: "Smith"
|
82
61
|
},
|
83
62
|
{
|
84
|
-
|
85
|
-
|
86
|
-
message: "Connection pool exhausted",
|
87
|
-
context: { pool_size: 20, active_connections: 20, queue_length: 15 }
|
63
|
+
first_name: "Carol",
|
64
|
+
last_name: "Williams"
|
88
65
|
}
|
89
66
|
]
|
90
67
|
|
91
|
-
|
92
|
-
|
68
|
+
# Replace transport with :jsonl format and publish both messages
|
69
|
+
jsonl_messages.each do |msg_data|
|
70
|
+
message = DemoMessage.new(**msg_data)
|
71
|
+
message.transport SmartMessage::Transport::StdoutTransport.new(format: :jsonl)
|
93
72
|
message.publish
|
94
|
-
sleep(0.5) # Small delay for readability
|
95
73
|
end
|
96
74
|
|
97
|
-
puts
|
98
|
-
puts
|
75
|
+
puts
|
76
|
+
puts
|
77
|
+
puts "📊 Example 3: JSON Format (:json) - 3 messages"
|
78
|
+
puts "=" * 60
|
99
79
|
|
100
|
-
# Create
|
101
|
-
|
80
|
+
# Create three simple messages for JSON format
|
81
|
+
json_messages = [
|
102
82
|
{
|
103
|
-
|
104
|
-
|
105
|
-
unit: "%",
|
106
|
-
tags: { host: "web-01", environment: "production" }
|
83
|
+
first_name: "David",
|
84
|
+
last_name: "Brown"
|
107
85
|
},
|
108
86
|
{
|
109
|
-
|
110
|
-
|
111
|
-
unit: "MB",
|
112
|
-
tags: { host: "web-01", environment: "production" }
|
87
|
+
first_name: "Emma",
|
88
|
+
last_name: "Davis"
|
113
89
|
},
|
114
90
|
{
|
115
|
-
|
116
|
-
|
117
|
-
unit: "req/sec",
|
118
|
-
tags: { service: "api-gateway", endpoint: "/api/users" }
|
91
|
+
first_name: "Frank",
|
92
|
+
last_name: "Miller"
|
119
93
|
}
|
120
94
|
]
|
121
95
|
|
122
|
-
|
123
|
-
|
96
|
+
# Replace transport with :json format and publish all three messages
|
97
|
+
json_messages.each do |msg_data|
|
98
|
+
message = DemoMessage.new(**msg_data)
|
99
|
+
message.transport SmartMessage::Transport::StdoutTransport.new(format: :json)
|
124
100
|
message.publish
|
125
|
-
sleep(0.3)
|
126
101
|
end
|
127
102
|
|
128
|
-
puts
|
129
|
-
puts
|
130
|
-
puts "
|
131
|
-
puts "
|
132
|
-
puts "
|
133
|
-
puts "
|
134
|
-
puts
|
135
|
-
puts "
|
136
|
-
|
137
|
-
puts "\n💡 Usage Ideas:"
|
138
|
-
puts " • Debug message flow: ./my_app | grep 'MessageClass'"
|
103
|
+
puts
|
104
|
+
puts
|
105
|
+
puts "\n🔍 Format Comparison Summary:"
|
106
|
+
puts " 🎨 :pretty - Beautiful, colorized output using amazing_print"
|
107
|
+
puts " 📋 :jsonl - JSON Lines format, one message per line (default)"
|
108
|
+
puts " 📊 :json - Compact JSON format without newlines"
|
109
|
+
puts
|
110
|
+
puts "💡 Usage Ideas:"
|
111
|
+
puts " • Debug message flow: ./my_app | grep 'first_name'"
|
139
112
|
puts " • Feed log aggregators: ./my_app | fluentd"
|
140
|
-
puts " • Pipe to analysis tools: ./my_app | jq '.
|
113
|
+
puts " • Pipe to analysis tools: ./my_app | jq '.last_name'"
|
141
114
|
puts " • Integration testing: capture and verify output"
|
142
115
|
puts " • Development monitoring: real-time message visibility"
|
143
|
-
|
144
|
-
puts "
|
145
|
-
puts "=" * 80
|
116
|
+
puts
|
117
|
+
puts "⚠️ Note: If you need local message processing, use MemoryTransport instead!"
|
118
|
+
puts "=" * 80
|
@@ -52,11 +52,13 @@ module SmartMessage
|
|
52
52
|
flush_buffer if buffered_mode?
|
53
53
|
if @file_mutex
|
54
54
|
@file_mutex.synchronize do
|
55
|
-
@file_handle&.
|
55
|
+
@file_handle&.flush unless @file_handle&.closed?
|
56
|
+
@file_handle&.close unless @file_handle&.closed?
|
56
57
|
@file_handle = nil
|
57
58
|
end
|
58
59
|
else
|
59
|
-
@file_handle&.
|
60
|
+
@file_handle&.flush unless @file_handle&.closed?
|
61
|
+
@file_handle&.close unless @file_handle&.closed?
|
60
62
|
@file_handle = nil
|
61
63
|
end
|
62
64
|
end
|
@@ -64,22 +66,51 @@ module SmartMessage
|
|
64
66
|
private
|
65
67
|
|
66
68
|
def prepare_file_content(serialized_message)
|
67
|
-
case @options[:file_format]
|
68
|
-
when :
|
69
|
-
"#{serialized_message}\n"
|
70
|
-
when :raw
|
69
|
+
case @options[:format] || @options[:file_format] || :jsonl
|
70
|
+
when :json, :raw
|
71
71
|
serialized_message
|
72
|
+
when :jsonl, :lines
|
73
|
+
"#{serialized_message}\n"
|
74
|
+
when :pretty
|
75
|
+
begin
|
76
|
+
require 'amazing_print'
|
77
|
+
# Use the serializer to decode back to the original data structure
|
78
|
+
if @serializer.respond_to?(:decode)
|
79
|
+
data = @serializer.decode(serialized_message)
|
80
|
+
data.ai + "\n"
|
81
|
+
else
|
82
|
+
# Fallback: try to parse as JSON
|
83
|
+
begin
|
84
|
+
require 'json'
|
85
|
+
data = JSON.parse(serialized_message)
|
86
|
+
data.ai + "\n"
|
87
|
+
rescue JSON::ParserError
|
88
|
+
# If not JSON, pretty print the raw string
|
89
|
+
serialized_message.ai + "\n"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
rescue LoadError
|
93
|
+
# Fallback if amazing_print not available
|
94
|
+
"#{serialized_message}\n"
|
95
|
+
rescue => e
|
96
|
+
# Handle any other errors (like circuit breaker issues)
|
97
|
+
"#{serialized_message}\n"
|
98
|
+
end
|
72
99
|
else
|
73
|
-
"#{serialized_message}\n" # default to
|
100
|
+
"#{serialized_message}\n" # default to jsonl
|
74
101
|
end
|
75
102
|
end
|
76
103
|
|
77
104
|
def open_file_handle
|
105
|
+
# Return IO objects directly, don't try to open them
|
106
|
+
return @options[:file_path] if @options[:file_path].respond_to?(:write)
|
107
|
+
# Open file handle for string paths
|
78
108
|
File.open(current_file_path, file_mode, encoding: @options[:encoding])
|
79
109
|
end
|
80
110
|
|
81
111
|
def ensure_directory_exists
|
82
112
|
return unless @options[:create_directories]
|
113
|
+
return if @options[:file_path].respond_to?(:write) # Skip for IO objects
|
83
114
|
|
84
115
|
dir = File.dirname(current_file_path)
|
85
116
|
FileUtils.mkdir_p(dir) unless Dir.exist?(dir)
|
@@ -110,6 +141,7 @@ module SmartMessage
|
|
110
141
|
end
|
111
142
|
|
112
143
|
def direct_write(content)
|
144
|
+
return unless @file_handle
|
113
145
|
@file_handle.write(content)
|
114
146
|
@file_handle.flush if @options[:auto_flush]
|
115
147
|
end
|
@@ -80,8 +80,11 @@ module SmartMessage
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
def publish(
|
84
|
-
|
83
|
+
def publish(message)
|
84
|
+
# Extract message class and serialize the message
|
85
|
+
message_class = message._sm_header.message_class
|
86
|
+
serialized_message = encode_message(message)
|
87
|
+
do_publish(message_class, serialized_message)
|
85
88
|
end
|
86
89
|
|
87
90
|
def do_publish(message_class, serialized_message)
|
@@ -5,100 +5,12 @@
|
|
5
5
|
require_relative 'file_transport'
|
6
6
|
|
7
7
|
module SmartMessage
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
def initialize(options = {})
|
14
|
-
# Merge STDOUT-specific defaults with FileTransport defaults
|
15
|
-
stdout_options = {
|
16
|
-
file_path: $stdout,
|
17
|
-
file_mode: 'w',
|
18
|
-
file_type: :regular,
|
19
|
-
format: :pretty, # :pretty or :json
|
20
|
-
enable_subscriptions: false, # STDOUT is publish-only
|
21
|
-
auto_flush: true
|
22
|
-
}
|
23
|
-
super(stdout_options.merge(options))
|
24
|
-
end
|
25
|
-
|
26
|
-
# Default to JSON for readability in STDOUT
|
27
|
-
def default_serializer
|
28
|
-
SmartMessage::Serializer::Json.new
|
29
|
-
end
|
30
|
-
|
31
|
-
# Override configuration to handle STDOUT-specific setup
|
32
|
-
def configure
|
33
|
-
# If file_path is a string, delegate to parent FileTransport
|
34
|
-
if @options[:file_path].is_a?(String)
|
35
|
-
super
|
36
|
-
else
|
37
|
-
# Use the IO object directly (like $stdout)
|
38
|
-
@file_handle = @options[:file_path]
|
39
|
-
@write_buffer = []
|
40
|
-
@last_flush = Time.now
|
41
|
-
@file_mutex = Mutex.new
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Override write_to_file to handle STDOUT directly
|
46
|
-
def write_to_file(serialized_message)
|
47
|
-
# If using a string file path, delegate to parent
|
48
|
-
if @options[:file_path].is_a?(String)
|
49
|
-
super
|
50
|
-
else
|
51
|
-
# Use IO object directly
|
52
|
-
content = prepare_file_content(serialized_message)
|
53
|
-
@file_handle.write(content)
|
54
|
-
@file_handle.flush if @options[:auto_flush]
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# Override the file content preparation to use custom formatting
|
59
|
-
def prepare_file_content(serialized_message)
|
60
|
-
format_message(@current_message_class, serialized_message)
|
61
|
-
end
|
62
|
-
|
63
|
-
# Override subscribe methods to log warnings since this is a publish-only transport
|
64
|
-
def subscribe(message_class, process_method, filter_options = {})
|
65
|
-
logger.warn { "[SmartMessage::StdoutTransport] Subscription attempt ignored - STDOUT transport is publish-only (message_class: #{message_class}, process_method: #{process_method})" }
|
66
|
-
end
|
67
|
-
|
68
|
-
def unsubscribe(message_class, process_method)
|
69
|
-
logger.warn { "[SmartMessage::StdoutTransport] Unsubscribe attempt ignored - STDOUT transport is publish-only (message_class: #{message_class}, process_method: #{process_method})" }
|
70
|
-
end
|
71
|
-
|
72
|
-
def unsubscribe!(message_class)
|
73
|
-
logger.warn { "[SmartMessage::StdoutTransport] Unsubscribe all attempt ignored - STDOUT transport is publish-only (message_class: #{message_class})" }
|
74
|
-
end
|
75
|
-
|
76
|
-
private
|
77
|
-
|
78
|
-
def format_message(message_class, serialized_message)
|
79
|
-
if @options[:format] == :json
|
80
|
-
# Output as JSON for machine parsing
|
81
|
-
{
|
82
|
-
transport: 'stdout',
|
83
|
-
message_class: message_class,
|
84
|
-
serialized_message: serialized_message,
|
85
|
-
timestamp: Time.now.iso8601
|
86
|
-
}.to_json + "\n"
|
87
|
-
else
|
88
|
-
# Pretty format for human reading
|
89
|
-
<<~MESSAGE
|
90
|
-
|
91
|
-
===================================================
|
92
|
-
== SmartMessage Published via STDOUT Transport
|
93
|
-
== Message Class: #{message_class}
|
94
|
-
== Serializer: #{@serializer.class.name}
|
95
|
-
== Serialized Message:
|
96
|
-
#{serialized_message}
|
97
|
-
===================================================
|
98
|
-
|
99
|
-
MESSAGE
|
8
|
+
module Transport
|
9
|
+
class StdoutTransport < FileTransport
|
10
|
+
def initialize(options = {})
|
11
|
+
defaults = { file_path: $stdout, file_mode: 'w', file_type: :regular }
|
12
|
+
super(defaults.merge(options))
|
100
13
|
end
|
101
14
|
end
|
102
15
|
end
|
103
16
|
end
|
104
|
-
end
|
data/mkdocs.yml
CHANGED
@@ -169,13 +169,12 @@ nav:
|
|
169
169
|
- 🚚 Transports:
|
170
170
|
- Memory Transport: transports/memory-transport.md
|
171
171
|
- Redis Transport: transports/redis-transport.md
|
172
|
-
-
|
173
|
-
-
|
172
|
+
- STDOUT Transport: transports/stdout-transport.md
|
173
|
+
- File Transport: transports/file-transport.md
|
174
|
+
- Multi-Transport Publishing: transports/multi-transport.md
|
174
175
|
- Redis Transport Comparison: transports/redis-transport-comparison.md
|
175
176
|
- 📚 Guides:
|
176
|
-
-
|
177
|
-
- Redis Queue Patterns: guides/redis-queue-patterns.md
|
178
|
-
- Redis Queue Production: guides/redis-queue-production.md
|
177
|
+
- Transport Selection: guides/transport-selection.md
|
179
178
|
- ⚙️ Development:
|
180
179
|
- Troubleshooting: development/troubleshooting.md
|
181
180
|
- Ideas & Roadmap: development/ideas.md
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smart_message
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dewayne VanHoozer
|
@@ -311,6 +311,7 @@ files:
|
|
311
311
|
- docs/development/troubleshooting.md
|
312
312
|
- docs/getting-started/examples.md
|
313
313
|
- docs/getting-started/quick-start.md
|
314
|
+
- docs/guides/transport-selection.md
|
314
315
|
- docs/index.md
|
315
316
|
- docs/reference/dead-letter-queue.md
|
316
317
|
- docs/reference/logging.md
|
@@ -318,10 +319,12 @@ files:
|
|
318
319
|
- docs/reference/proc-handlers.md
|
319
320
|
- docs/reference/serializers.md
|
320
321
|
- docs/reference/transports.md
|
322
|
+
- docs/transports/file-transport.md
|
321
323
|
- docs/transports/memory-transport.md
|
322
324
|
- docs/transports/multi-transport.md
|
323
325
|
- docs/transports/redis-transport-comparison.md
|
324
326
|
- docs/transports/redis-transport.md
|
327
|
+
- docs/transports/stdout-transport.md
|
325
328
|
- examples/.gitignore
|
326
329
|
- examples/README.md
|
327
330
|
- examples/city_scenario/911_emergency_call_flow.svg
|
@@ -380,7 +383,6 @@ files:
|
|
380
383
|
- examples/memory/15_logger_demo.rb
|
381
384
|
- examples/memory/16_pretty_print_demo.rb
|
382
385
|
- examples/memory/README.md
|
383
|
-
- examples/memory/log/demo_app.log.1
|
384
386
|
- examples/memory/log/demo_app.log.2
|
385
387
|
- examples/memory/memory_transport_architecture.svg
|
386
388
|
- examples/memory/point_to_point_pattern.svg
|
@@ -1,100 +0,0 @@
|
|
1
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 1 - generating content to trigger file rolling when size limit is reached [message:Log entry 1 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
2
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 1 [entry_number:1] [batch:demo] [message:Debug entry 1] [source:15_logger_demo.rb:93]
|
3
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 2 - generating content to trigger file rolling when size limit is reached [message:Log entry 2 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
4
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 2 [entry_number:2] [batch:demo] [message:Debug entry 2] [source:15_logger_demo.rb:93]
|
5
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 3 - generating content to trigger file rolling when size limit is reached [message:Log entry 3 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
6
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 3 [entry_number:3] [batch:demo] [message:Debug entry 3] [source:15_logger_demo.rb:93]
|
7
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 4 - generating content to trigger file rolling when size limit is reached [message:Log entry 4 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
8
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 4 [entry_number:4] [batch:demo] [message:Debug entry 4] [source:15_logger_demo.rb:93]
|
9
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 5 - generating content to trigger file rolling when size limit is reached [message:Log entry 5 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
10
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 5 [entry_number:5] [batch:demo] [message:Debug entry 5] [source:15_logger_demo.rb:93]
|
11
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 6 - generating content to trigger file rolling when size limit is reached [message:Log entry 6 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
12
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 6 [entry_number:6] [batch:demo] [message:Debug entry 6] [source:15_logger_demo.rb:93]
|
13
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 7 - generating content to trigger file rolling when size limit is reached [message:Log entry 7 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
14
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 7 [entry_number:7] [batch:demo] [message:Debug entry 7] [source:15_logger_demo.rb:93]
|
15
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 8 - generating content to trigger file rolling when size limit is reached [message:Log entry 8 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
16
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 8 [entry_number:8] [batch:demo] [message:Debug entry 8] [source:15_logger_demo.rb:93]
|
17
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 9 - generating content to trigger file rolling when size limit is reached [message:Log entry 9 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
18
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 9 [entry_number:9] [batch:demo] [message:Debug entry 9] [source:15_logger_demo.rb:93]
|
19
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 10 - generating content to trigger file rolling when size limit is reached [message:Log entry 10 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
20
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 10 [entry_number:10] [batch:demo] [message:Debug entry 10] [source:15_logger_demo.rb:93]
|
21
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 11 - generating content to trigger file rolling when size limit is reached [message:Log entry 11 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
22
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 11 [entry_number:11] [batch:demo] [message:Debug entry 11] [source:15_logger_demo.rb:93]
|
23
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 12 - generating content to trigger file rolling when size limit is reached [message:Log entry 12 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
24
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 12 [entry_number:12] [batch:demo] [message:Debug entry 12] [source:15_logger_demo.rb:93]
|
25
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 13 - generating content to trigger file rolling when size limit is reached [message:Log entry 13 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
26
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 13 [entry_number:13] [batch:demo] [message:Debug entry 13] [source:15_logger_demo.rb:93]
|
27
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 14 - generating content to trigger file rolling when size limit is reached [message:Log entry 14 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
28
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 14 [entry_number:14] [batch:demo] [message:Debug entry 14] [source:15_logger_demo.rb:93]
|
29
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 15 - generating content to trigger file rolling when size limit is reached [message:Log entry 15 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
30
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 15 [entry_number:15] [batch:demo] [message:Debug entry 15] [source:15_logger_demo.rb:93]
|
31
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 16 - generating content to trigger file rolling when size limit is reached [message:Log entry 16 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
32
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 16 [entry_number:16] [batch:demo] [message:Debug entry 16] [source:15_logger_demo.rb:93]
|
33
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 17 - generating content to trigger file rolling when size limit is reached [message:Log entry 17 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
34
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 17 [entry_number:17] [batch:demo] [message:Debug entry 17] [source:15_logger_demo.rb:93]
|
35
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 18 - generating content to trigger file rolling when size limit is reached [message:Log entry 18 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
36
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 18 [entry_number:18] [batch:demo] [message:Debug entry 18] [source:15_logger_demo.rb:93]
|
37
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 19 - generating content to trigger file rolling when size limit is reached [message:Log entry 19 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
38
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 19 [entry_number:19] [batch:demo] [message:Debug entry 19] [source:15_logger_demo.rb:93]
|
39
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 20 - generating content to trigger file rolling when size limit is reached [message:Log entry 20 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
40
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 20 [entry_number:20] [batch:demo] [message:Debug entry 20] [source:15_logger_demo.rb:93]
|
41
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 21 - generating content to trigger file rolling when size limit is reached [message:Log entry 21 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
42
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 21 [entry_number:21] [batch:demo] [message:Debug entry 21] [source:15_logger_demo.rb:93]
|
43
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 22 - generating content to trigger file rolling when size limit is reached [message:Log entry 22 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
44
|
-
[2025-09-10T09:53:01.164 DEBUG (19258) #] Debug entry 22 [entry_number:22] [batch:demo] [message:Debug entry 22] [source:15_logger_demo.rb:93]
|
45
|
-
[2025-09-10T09:53:01.164 INFO (19258) #] Log entry 23 - generating content to trigger file rolling when size limit is reached [message:Log entry 23 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
46
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 23 [entry_number:23] [batch:demo] [message:Debug entry 23] [source:15_logger_demo.rb:93]
|
47
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 24 - generating content to trigger file rolling when size limit is reached [message:Log entry 24 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
48
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 24 [entry_number:24] [batch:demo] [message:Debug entry 24] [source:15_logger_demo.rb:93]
|
49
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 25 - generating content to trigger file rolling when size limit is reached [message:Log entry 25 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
50
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 25 [entry_number:25] [batch:demo] [message:Debug entry 25] [source:15_logger_demo.rb:93]
|
51
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 26 - generating content to trigger file rolling when size limit is reached [message:Log entry 26 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
52
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 26 [entry_number:26] [batch:demo] [message:Debug entry 26] [source:15_logger_demo.rb:93]
|
53
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 27 - generating content to trigger file rolling when size limit is reached [message:Log entry 27 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
54
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 27 [entry_number:27] [batch:demo] [message:Debug entry 27] [source:15_logger_demo.rb:93]
|
55
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 28 - generating content to trigger file rolling when size limit is reached [message:Log entry 28 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
56
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 28 [entry_number:28] [batch:demo] [message:Debug entry 28] [source:15_logger_demo.rb:93]
|
57
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 29 - generating content to trigger file rolling when size limit is reached [message:Log entry 29 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
58
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 29 [entry_number:29] [batch:demo] [message:Debug entry 29] [source:15_logger_demo.rb:93]
|
59
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 30 - generating content to trigger file rolling when size limit is reached [message:Log entry 30 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
60
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 30 [entry_number:30] [batch:demo] [message:Debug entry 30] [source:15_logger_demo.rb:93]
|
61
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 31 - generating content to trigger file rolling when size limit is reached [message:Log entry 31 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
62
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 31 [entry_number:31] [batch:demo] [message:Debug entry 31] [source:15_logger_demo.rb:93]
|
63
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 32 - generating content to trigger file rolling when size limit is reached [message:Log entry 32 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
64
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 32 [entry_number:32] [batch:demo] [message:Debug entry 32] [source:15_logger_demo.rb:93]
|
65
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 33 - generating content to trigger file rolling when size limit is reached [message:Log entry 33 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
66
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 33 [entry_number:33] [batch:demo] [message:Debug entry 33] [source:15_logger_demo.rb:93]
|
67
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 34 - generating content to trigger file rolling when size limit is reached [message:Log entry 34 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
68
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 34 [entry_number:34] [batch:demo] [message:Debug entry 34] [source:15_logger_demo.rb:93]
|
69
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 35 - generating content to trigger file rolling when size limit is reached [message:Log entry 35 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
70
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 35 [entry_number:35] [batch:demo] [message:Debug entry 35] [source:15_logger_demo.rb:93]
|
71
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 36 - generating content to trigger file rolling when size limit is reached [message:Log entry 36 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
72
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 36 [entry_number:36] [batch:demo] [message:Debug entry 36] [source:15_logger_demo.rb:93]
|
73
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 37 - generating content to trigger file rolling when size limit is reached [message:Log entry 37 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
74
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 37 [entry_number:37] [batch:demo] [message:Debug entry 37] [source:15_logger_demo.rb:93]
|
75
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 38 - generating content to trigger file rolling when size limit is reached [message:Log entry 38 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
76
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 38 [entry_number:38] [batch:demo] [message:Debug entry 38] [source:15_logger_demo.rb:93]
|
77
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 39 - generating content to trigger file rolling when size limit is reached [message:Log entry 39 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
78
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 39 [entry_number:39] [batch:demo] [message:Debug entry 39] [source:15_logger_demo.rb:93]
|
79
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 40 - generating content to trigger file rolling when size limit is reached [message:Log entry 40 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
80
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 40 [entry_number:40] [batch:demo] [message:Debug entry 40] [source:15_logger_demo.rb:93]
|
81
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 41 - generating content to trigger file rolling when size limit is reached [message:Log entry 41 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
82
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 41 [entry_number:41] [batch:demo] [message:Debug entry 41] [source:15_logger_demo.rb:93]
|
83
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 42 - generating content to trigger file rolling when size limit is reached [message:Log entry 42 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
84
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 42 [entry_number:42] [batch:demo] [message:Debug entry 42] [source:15_logger_demo.rb:93]
|
85
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 43 - generating content to trigger file rolling when size limit is reached [message:Log entry 43 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
86
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 43 [entry_number:43] [batch:demo] [message:Debug entry 43] [source:15_logger_demo.rb:93]
|
87
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 44 - generating content to trigger file rolling when size limit is reached [message:Log entry 44 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
88
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 44 [entry_number:44] [batch:demo] [message:Debug entry 44] [source:15_logger_demo.rb:93]
|
89
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 45 - generating content to trigger file rolling when size limit is reached [message:Log entry 45 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
90
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 45 [entry_number:45] [batch:demo] [message:Debug entry 45] [source:15_logger_demo.rb:93]
|
91
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 46 - generating content to trigger file rolling when size limit is reached [message:Log entry 46 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
92
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 46 [entry_number:46] [batch:demo] [message:Debug entry 46] [source:15_logger_demo.rb:93]
|
93
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 47 - generating content to trigger file rolling when size limit is reached [message:Log entry 47 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
94
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 47 [entry_number:47] [batch:demo] [message:Debug entry 47] [source:15_logger_demo.rb:93]
|
95
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 48 - generating content to trigger file rolling when size limit is reached [message:Log entry 48 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
96
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 48 [entry_number:48] [batch:demo] [message:Debug entry 48] [source:15_logger_demo.rb:93]
|
97
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 49 - generating content to trigger file rolling when size limit is reached [message:Log entry 49 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
98
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 49 [entry_number:49] [batch:demo] [message:Debug entry 49] [source:15_logger_demo.rb:93]
|
99
|
-
[2025-09-10T09:53:01.165 INFO (19258) #] Log entry 50 - generating content to trigger file rolling when size limit is reached [message:Log entry 50 - generating content to trigger file rolling when size limit is reached] [source:15_logger_demo.rb:92]
|
100
|
-
[2025-09-10T09:53:01.165 DEBUG (19258) #] Debug entry 50 [entry_number:50] [batch:demo] [message:Debug entry 50] [source:15_logger_demo.rb:93]
|