Skip to content

Commit dda132a

Browse files
committed
Fix up syslog protocol options to set ip to localhost if unset
1 parent 2745ec6 commit dda132a

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

src/rabbit_lager.erl

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ configure_lager() ->
196196
%% Set rabbit.log config variable based on environment.
197197
prepare_rabbit_log_config(),
198198
%% Configure syslog library.
199-
ok = configure_syslog(),
199+
ok = configure_syslog_error_logger(),
200200
%% At this point we should have rabbit.log application variable
201201
%% configured to generate RabbitMQ log handlers.
202202
GeneratedHandlers = generate_lager_handlers(),
@@ -266,14 +266,44 @@ configure_lager() ->
266266
end,
267267
ok.
268268

269-
configure_syslog() ->
269+
configure_syslog_error_logger() ->
270270
%% Disable error_logger forwarding to syslog if it's not configured
271271
case application:get_env(syslog, syslog_error_logger) of
272272
undefined ->
273-
ok = application:set_env(syslog, syslog_error_logger, false);
273+
application:set_env(syslog, syslog_error_logger, false);
274274
_ -> ok
275275
end.
276276

277+
-define(SYSLOG_LOCAL_IP, {ip,{127,0,0,1}}).
278+
configure_syslog() ->
279+
ok = app_utils:load_applications([syslog]),
280+
%% https://github.com/schlagert/syslog#configuration
281+
Protocol = case application:get_env(syslog, protocol) of
282+
undefined ->
283+
{rfc3164, udp, [{ip,{127,0,0,1}}]};
284+
%% {protocol,
285+
%% rfc3164 |
286+
%% rfc5424 |
287+
%% {rfc3164 | rfc5424, tcp | udp} |
288+
%% {rfc3164 | rfc5424, udp, [gen_udp:option()]} |
289+
%% {rfc3164 | rfc5424, tcp, [gen_tcp:option()]} |
290+
%% {rfc5424, tls, [ssl:connect_option()]}
291+
%% }
292+
{ok, Rfc} when Rfc =:= rfc3164; Rfc =:= rfc5424 ->
293+
{Rfc, udp, [?SYSLOG_LOCAL_IP]};
294+
{ok, {Rfc, Transport}} when Rfc =:= rfc3164; Rfc =:= rfc5424 ->
295+
{Rfc, Transport, [?SYSLOG_LOCAL_IP]};
296+
{ok, {Rfc, Transport, Opts}} when Rfc =:= rfc3164; Rfc =:= rfc5424 ->
297+
case proplists:lookup(ip, Opts) of
298+
none ->
299+
{Rfc, Transport, [?SYSLOG_LOCAL_IP|Opts]};
300+
_ ->
301+
{Rfc, Transport, Opts}
302+
end
303+
end,
304+
ok = application:unset_env(syslog, protocol),
305+
ok = application:set_env(syslog, protocol, Protocol).
306+
277307
remove_rabbit_handlers(Handlers, FormerHandlers) ->
278308
lists:filter(fun(Handler) ->
279309
not lists:member(Handler, FormerHandlers)
@@ -317,6 +347,7 @@ lager_backend(exchange) -> lager_exchange_backend.
317347
generate_handler(syslog_lager_backend, HandlerConfig) ->
318348
DefaultConfigVal = default_config_value(level),
319349
Level = proplists:get_value(level, HandlerConfig, DefaultConfigVal),
350+
ok = configure_syslog(),
320351
ok = app_utils:start_applications([syslog]),
321352
[{syslog_lager_backend,
322353
[Level,

0 commit comments

Comments
 (0)