31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/bitlogger/initializer.rb', line 31
def get_logger(options)
target = options.fetch(:target)
level = options.fetch(:level).to_sym
additional = options.fetch(:additional)
buffered = options.fetch(:buffered)
buffer_size = options.fetch(:buffer_size)
buffer_time = options.fetch(:buffer_time)
ca_crt_path = options.fetch(:ca_crt_path)
type = nil
if target.is_a?(IO)
type = :io
elsif target.is_a?(String)
if target.start_with?('http') && URI.valid?(target)
type = :remote
else
type = :io
if target.upcase == 'STDOUT'
target = STDOUT
elsif target.upcase == 'STDERR'
target = STDERR
else
target = File.open(target, 'a')
end
end
else
raise StandardError, 'Unknown logging target type'
end
logger = nil
if type == :io
buffered = false
logger = get_filter_decorator(
get_io_logger(
get_pretty_formatter,
additional,
target
),
:log,
level
)
at_exit { target.close }
elsif type == :remote
buffered = true
logger = get_filter_decorator(
get_remote_logger(
get_dummy_formatter,
additional,
target,
:logs,
ca_crt_path
),
:log,
level
)
end
if buffered
logger = BufferDecorator.new(
logger,
:log,
buffer_size,
buffer_time
)
at_exit { Bitlogger.logger.empty }
end
logger
end
|