Class: LogStashLogger::Device::Connectable
- Inherits:
-
Base
- Object
- Base
- LogStashLogger::Device::Connectable
show all
- Includes:
- Buffer
- Defined in:
- lib/logstash-logger/device/connectable.rb
Instance Attribute Summary collapse
Attributes inherited from Base
#error_logger, #io, #sync
Instance Method Summary
collapse
Methods included from Buffer
#buffer_flush, #buffer_full?, #buffer_initialize, #buffer_receive, #reset_buffer
Methods inherited from Base
#close!, #unrecoverable_error?
Constructor Details
#initialize(opts = {}) ⇒ Connectable
Returns a new instance of Connectable.
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/logstash-logger/device/connectable.rb', line 10
def initialize(opts = {})
super
@buffer_group = nil
@buffer_max_items = opts[:buffer_max_items]
@buffer_max_interval = opts[:buffer_max_interval]
@drop_messages_on_flush_error =
if opts.key?(:drop_messages_on_flush_error)
opts.delete(:drop_messages_on_flush_error)
else
false
end
@drop_messages_on_full_buffer =
if opts.key?(:drop_messages_on_full_buffer)
opts.delete(:drop_messages_on_full_buffer)
else
true
end
@buffer_flush_at_exit =
if opts.key?(:buffer_flush_at_exit)
opts.delete(:buffer_flush_at_exit)
else
true
end
@buffer_logger = opts[:buffer_logger]
buffer_initialize(
max_items: @buffer_max_items,
max_interval: @buffer_max_interval,
logger: buffer_logger,
autoflush: @sync,
drop_messages_on_flush_error: @drop_messages_on_flush_error,
drop_messages_on_full_buffer: @drop_messages_on_full_buffer,
flush_at_exit: @buffer_flush_at_exit
)
end
|
Instance Attribute Details
#buffer_logger ⇒ Object
Returns the value of attribute buffer_logger.
8
9
10
|
# File 'lib/logstash-logger/device/connectable.rb', line 8
def buffer_logger
@buffer_logger
end
|
Instance Method Details
#close(opts = {}) ⇒ Object
67
68
69
70
71
72
73
|
# File 'lib/logstash-logger/device/connectable.rb', line 67
def close(opts = {})
if opts.fetch(:flush, true)
buffer_flush(final: true)
end
super
end
|
#connect ⇒ Object
Implemented by subclasses
98
99
100
|
# File 'lib/logstash-logger/device/connectable.rb', line 98
def connect
fail NotImplementedError
end
|
#connected? ⇒ Boolean
81
82
83
|
# File 'lib/logstash-logger/device/connectable.rb', line 81
def connected?
!!@io
end
|
#flush(*args) ⇒ Object
54
55
56
57
58
59
60
61
|
# File 'lib/logstash-logger/device/connectable.rb', line 54
def flush(*args)
if args.empty?
buffer_flush
else
messages, group = *args
write_batch(messages, group)
end
end
|
#on_full_buffer_receive(data) ⇒ Object
63
64
65
|
# File 'lib/logstash-logger/device/connectable.rb', line 63
def on_full_buffer_receive(data)
log_warning("Buffer Full - #{data}")
end
|
#reconnect ⇒ Object
107
108
109
110
|
# File 'lib/logstash-logger/device/connectable.rb', line 107
def reconnect
close(flush: false)
connect
end
|
#reset ⇒ Object
102
103
104
105
|
# File 'lib/logstash-logger/device/connectable.rb', line 102
def reset
reset_buffer
close(flush: false)
end
|
#to_io ⇒ Object
75
76
77
78
79
|
# File 'lib/logstash-logger/device/connectable.rb', line 75
def to_io
with_connection do
super
end
end
|
#with_connection ⇒ Object
Ensure the block is executed with a valid connection
113
114
115
116
117
118
119
120
|
# File 'lib/logstash-logger/device/connectable.rb', line 113
def with_connection()
connect unless connected?
yield
rescue => e
log_error(e)
close(flush: false)
raise
end
|
#write(message) ⇒ Object
50
51
52
|
# File 'lib/logstash-logger/device/connectable.rb', line 50
def write(message)
buffer_receive(message, @buffer_group) unless message.nil?
end
|
#write_batch(messages, group = nil) ⇒ Object
91
92
93
94
95
|
# File 'lib/logstash-logger/device/connectable.rb', line 91
def write_batch(messages, group = nil)
with_connection do
super
end
end
|
#write_one(message) ⇒ Object
85
86
87
88
89
|
# File 'lib/logstash-logger/device/connectable.rb', line 85
def write_one(message)
with_connection do
super
end
end
|