summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2018-05-22 12:08:32 +0100
committerGitHub <noreply@github.com>2018-05-22 12:08:32 +0100
commite73d8caa01a2c2636d6bc03f61babdf0eaba5396 (patch)
treeb5ac2da6ce45270bba51d15ee76e522b5b033348 /src
parentd0423f958599cba5148864997aa8446c873dad00 (diff)
parente8920ec0c59639c325f18ec7a9b9aa2999aa2c80 (diff)
downloadrabbitmq-server-git-e73d8caa01a2c2636d6bc03f61babdf0eaba5396.tar.gz
Merge pull request #1600 from rabbitmq/syslog
Syslog integration
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_lager.erl38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/rabbit_lager.erl b/src/rabbit_lager.erl
index 9af1ed198b..e510db89b3 100644
--- a/src/rabbit_lager.erl
+++ b/src/rabbit_lager.erl
@@ -27,7 +27,9 @@
start_logger() ->
application:stop(lager),
+ application:stop(syslog),
ensure_lager_configured(),
+ application:ensure_all_started(syslog),
lager:start(),
fold_sinks(
fun
@@ -163,15 +165,19 @@ ensure_lager_configured() ->
end.
%% Lager should have handlers and sinks
+%% Error logger forwarding to syslog should be disabled
lager_configured() ->
Sinks = lager:list_all_sinks(),
ExpectedSinks = list_expected_sinks(),
application:get_env(lager, handlers) =/= undefined
andalso
- lists:all(fun(S) -> lists:member(S, Sinks) end, ExpectedSinks).
+ lists:all(fun(S) -> lists:member(S, Sinks) end, ExpectedSinks)
+ andalso
+ application:get_env(syslog, syslog_error_logger) =/= undefined.
configure_lager() ->
application:load(lager),
+ application:load(syslog),
%% Turn off reformatting for error_logger messages
case application:get_env(lager, error_logger_format_raw) of
undefined -> application:set_env(lager, error_logger_format_raw, true);
@@ -192,6 +198,8 @@ configure_lager() ->
end,
%% Set rabbit.log config variable based on environment.
prepare_rabbit_log_config(),
+ %% Configure syslog library.
+ configure_syslog(),
%% At this point we should have rabbit.log application variable
%% configured to generate RabbitMQ log handlers.
GeneratedHandlers = generate_lager_handlers(),
@@ -261,6 +269,13 @@ configure_lager() ->
end,
ok.
+configure_syslog() ->
+ %% Disable error_logger forwarding to syslog if it's not configured
+ case application:get_env(syslog, syslog_error_logger) of
+ undefined -> application:set_env(syslog, syslog_error_logger, false);
+ _ -> ok
+ end.
+
remove_rabbit_handlers(Handlers, FormerHandlers) ->
lists:filter(fun(Handler) ->
not lists:member(Handler, FormerHandlers)
@@ -296,19 +311,23 @@ generate_lager_handlers(LogHandlersConfig) ->
lager_backend(file) -> lager_file_backend;
lager_backend(console) -> lager_console_backend;
-lager_backend(syslog) -> lager_syslog_backend;
+lager_backend(syslog) -> syslog_lager_backend;
lager_backend(exchange) -> lager_exchange_backend.
+%% Syslog backend is using an old API for configuration and
+%% does not support proplists.
+generate_handler(syslog_lager_backend, HandlerConfig) ->
+ Level = proplists:get_value(level, HandlerConfig,
+ default_config_value(level)),
+ [{syslog_lager_backend,
+ [Level,
+ {},
+ {lager_default_formatter, syslog_formatter_config()}]}];
generate_handler(Backend, HandlerConfig) ->
[{Backend,
lists:ukeymerge(1, lists:ukeysort(1, HandlerConfig),
lists:ukeysort(1, default_handler_config(Backend)))}].
-default_handler_config(lager_syslog_backend) ->
- [{level, default_config_value(level)},
- {identity, "rabbitmq"},
- {facility, daemon},
- {formatter_config, default_config_value(formatter_config)}];
default_handler_config(lager_console_backend) ->
[{level, default_config_value(level)},
{formatter_config, default_config_value(formatter_config)}];
@@ -327,6 +346,11 @@ default_config_value(formatter_config) ->
{pid, ""},
" ", message, "\n"].
+syslog_formatter_config() ->
+ [color, "[", severity, "] ",
+ {pid, ""},
+ " ", message, "\n"].
+
prepare_rabbit_log_config() ->
%% If RABBIT_LOGS is not set, we should ignore it.
DefaultFile = application:get_env(rabbit, lager_default_file, undefined),