|
|
- -module(lager_rotate).
-
- -compile(export_all).
-
- -ifdef(TEST).
- -include_lib("eunit/include/eunit.hrl").
- -endif.
-
-
- rotate_test_() ->
- {foreach,
- fun() ->
- file:write_file("test1.log", ""),
- file:write_file("test2.log", ""),
- file:write_file("test3.log", ""),
- file:delete("test1.log.0"),
- file:delete("test2.log.0"),
- file:delete("test3.log.0"),
- error_logger:tty(false),
- application:load(lager),
- application:set_env(lager, handlers,
- [{lager_file_backend, [{file, "test1.log"}, {level, info}]},
- {lager_file_backend, [{file, "test2.log"}, {level, info}]}]),
- application:set_env(lager, extra_sinks,
- [{sink_event,
- [{handlers,
- [{lager_file_backend, [{file, "test3.log"}, {level, info}]}]}
- ]}]),
- application:set_env(lager, error_logger_redirect, false),
- application:set_env(lager, async_threshold, undefined),
- lager:start()
- end,
- fun(_) ->
- file:delete("test1.log"),
- file:delete("test2.log"),
- file:delete("test3.log"),
- file:delete("test1.log.0"),
- file:delete("test2.log.0"),
- file:delete("test3.log.0"),
- application:stop(lager),
- application:stop(goldrush),
- error_logger:tty(true)
- end,
- [{"Rotate single file",
- fun() ->
- lager:log(error, self(), "Test message 1"),
- lager:log(sink_event, error, self(), "Sink test message 1", []),
- lager:rotate_handler({lager_file_backend, "test1.log"}),
- timer:sleep(1000),
- true = filelib:is_regular("test1.log.0"),
- lager:log(error, self(), "Test message 2"),
- lager:log(sink_event, error, self(), "Sink test message 2", []),
-
- {ok, File1} = file:read_file("test1.log"),
- {ok, File2} = file:read_file("test2.log"),
- {ok, SinkFile} = file:read_file("test3.log"),
- {ok, File1Old} = file:read_file("test1.log.0"),
-
- have_no_log(File1, <<"Test message 1">>),
- have_log(File1, <<"Test message 2">>),
-
- have_log(File2, <<"Test message 1">>),
- have_log(File2, <<"Test message 2">>),
-
- have_log(File1Old, <<"Test message 1">>),
- have_no_log(File1Old, <<"Test message 2">>),
-
- have_log(SinkFile, <<"Sink test message 1">>),
- have_log(SinkFile, <<"Sink test message 2">>)
- end},
- {"Rotate sink",
- fun() ->
- lager:log(error, self(), "Test message 1"),
- lager:log(sink_event, error, self(), "Sink test message 1", []),
- lager:rotate_sink(sink_event),
- timer:sleep(1000),
- true = filelib:is_regular("test3.log.0"),
- lager:log(error, self(), "Test message 2"),
- lager:log(sink_event, error, self(), "Sink test message 2", []),
- {ok, File1} = file:read_file("test1.log"),
- {ok, File2} = file:read_file("test2.log"),
- {ok, SinkFile} = file:read_file("test3.log"),
- {ok, SinkFileOld} = file:read_file("test3.log.0"),
-
- have_log(File1, <<"Test message 1">>),
- have_log(File1, <<"Test message 2">>),
-
- have_log(File2, <<"Test message 1">>),
- have_log(File2, <<"Test message 2">>),
-
- have_log(SinkFileOld, <<"Sink test message 1">>),
- have_no_log(SinkFileOld, <<"Sink test message 2">>),
-
- have_no_log(SinkFile, <<"Sink test message 1">>),
- have_log(SinkFile, <<"Sink test message 2">>)
- end},
- {"Rotate all",
- fun() ->
- lager:log(error, self(), "Test message 1"),
- lager:log(sink_event, error, self(), "Sink test message 1", []),
- lager:rotate_all(),
- timer:sleep(1000),
- true = filelib:is_regular("test3.log.0"),
- lager:log(error, self(), "Test message 2"),
- lager:log(sink_event, error, self(), "Sink test message 2", []),
- {ok, File1} = file:read_file("test1.log"),
- {ok, File2} = file:read_file("test2.log"),
- {ok, SinkFile} = file:read_file("test3.log"),
- {ok, File1Old} = file:read_file("test1.log.0"),
- {ok, File2Old} = file:read_file("test2.log.0"),
- {ok, SinkFileOld} = file:read_file("test3.log.0"),
-
- have_no_log(File1, <<"Test message 1">>),
- have_log(File1, <<"Test message 2">>),
-
- have_no_log(File2, <<"Test message 1">>),
- have_log(File2, <<"Test message 2">>),
-
- have_no_log(SinkFile, <<"Sink test message 1">>),
- have_log(SinkFile, <<"Sink test message 2">>),
-
- have_log(SinkFileOld, <<"Sink test message 1">>),
- have_no_log(SinkFileOld, <<"Sink test message 2">>),
-
- have_log(File1Old, <<"Test message 1">>),
- have_no_log(File1Old, <<"Test message 2">>),
-
- have_log(File2Old, <<"Test message 1">>),
- have_no_log(File2Old, <<"Test message 2">>)
-
- end}]}.
-
- have_log(Data, Log) ->
- {_,_} = binary:match(Data, Log).
-
- have_no_log(Data, Log) ->
- nomatch = binary:match(Data, Log).
-
|