You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by fd...@apache.org on 2012/01/23 00:43:13 UTC
[13/50] git commit: COUCHDB-1380 Revert "Better logger performance"
COUCHDB-1380 Revert "Better logger performance"
This reverts commit 9f2398faef3936a844caffbaf3eef8675383ccfd which
switched couch_log to use disk_log. Unfortunately that module performs
positioned writes which prevents the usual logrotation strategy from
working correctly.
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/6228b178
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/6228b178
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/6228b178
Branch: refs/heads/COUCHDB-1342
Commit: 6228b178543429732c17b3a784c957d3782573b9
Parents: ef368d7
Author: Robert Newson <rn...@apache.org>
Authored: Tue Jan 17 14:26:01 2012 +0000
Committer: Robert Newson <rn...@apache.org>
Committed: Tue Jan 17 14:46:23 2012 +0000
----------------------------------------------------------------------
src/couchdb/couch_log.erl | 56 +++++++++++++-------------------
test/etap/172-os-daemon-errors.t | 1 -
2 files changed, 23 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/couchdb/blob/6228b178/src/couchdb/couch_log.erl
----------------------------------------------------------------------
diff --git a/src/couchdb/couch_log.erl b/src/couchdb/couch_log.erl
index 1b05f4d..8e24cab 100644
--- a/src/couchdb/couch_log.erl
+++ b/src/couchdb/couch_log.erl
@@ -27,29 +27,23 @@
-define(LEVEL_INFO, 2).
-define(LEVEL_DEBUG, 1).
--define(DISK_LOGGER, couch_disk_logger).
-
-record(state, {
+ fd,
level,
sasl
}).
debug(Format, Args) ->
{ConsoleMsg, FileMsg} = get_log_messages(self(), debug, Format, Args),
- ok = disk_log:balog(?DISK_LOGGER, FileMsg),
- gen_event:sync_notify(error_logger, {couch_debug, ConsoleMsg}).
+ gen_event:sync_notify(error_logger, {couch_debug, ConsoleMsg, FileMsg}).
info(Format, Args) ->
{ConsoleMsg, FileMsg} = get_log_messages(self(), info, Format, Args),
- ok = disk_log:balog(?DISK_LOGGER, FileMsg),
- gen_event:sync_notify(error_logger, {couch_info, ConsoleMsg}).
+ gen_event:sync_notify(error_logger, {couch_info, ConsoleMsg, FileMsg}).
error(Format, Args) ->
{ConsoleMsg, FileMsg} = get_log_messages(self(), error, Format, Args),
- % Synchronous logging for error messages only. We want to reduce the
- % chances of missing any if server is killed.
- ok = disk_log:blog(?DISK_LOGGER, FileMsg),
- gen_event:sync_notify(error_logger, {couch_error, ConsoleMsg}).
+ gen_event:sync_notify(error_logger, {couch_error, ConsoleMsg, FileMsg}).
level_integer(error) -> ?LEVEL_ERROR;
@@ -92,13 +86,11 @@ init([]) ->
end,
ets:insert(?MODULE, {level, Level}),
- DiskLogOptions = [
- {file, Filename}, {name, ?DISK_LOGGER},
- {format, external}, {type, halt}, {notify, true}
- ],
- case disk_log:open(DiskLogOptions) of
- {ok, ?DISK_LOGGER} ->
- {ok, #state{level = Level, sasl = Sasl}};
+ case file:open(Filename, [append]) of
+ {ok, Fd} ->
+ {ok, #state{fd = Fd, level = Level, sasl = Sasl}};
+ {error, eacces} ->
+ {stop, {file_permission_error, Filename}};
Error ->
{stop, Error}
end.
@@ -125,26 +117,24 @@ get_level_integer() ->
set_level_integer(Int) ->
gen_event:call(error_logger, couch_log, {set_level_integer, Int}).
-handle_event({couch_error, ConMsg}, State) ->
- ok = io:put_chars(ConMsg),
+handle_event({couch_error, ConMsg, FileMsg}, State) ->
+ log(State, ConMsg, FileMsg),
{ok, State};
-handle_event({couch_info, ConMsg}, #state{level = LogLevel} = State)
+handle_event({couch_info, ConMsg, FileMsg}, #state{level = LogLevel} = State)
when LogLevel =< ?LEVEL_INFO ->
- ok = io:put_chars(ConMsg),
+ log(State, ConMsg, FileMsg),
{ok, State};
-handle_event({couch_debug, ConMsg}, #state{level = LogLevel} = State)
+handle_event({couch_debug, ConMsg, FileMsg}, #state{level = LogLevel} = State)
when LogLevel =< ?LEVEL_DEBUG ->
- ok = io:put_chars(ConMsg),
+ log(State, ConMsg, FileMsg),
{ok, State};
handle_event({error_report, _, {Pid, _, _}}=Event, #state{sasl = true} = St) ->
{ConMsg, FileMsg} = get_log_messages(Pid, error, "~p", [Event]),
- ok = disk_log:blog(?DISK_LOGGER, FileMsg),
- ok = io:put_chars(ConMsg),
+ log(St, ConMsg, FileMsg),
{ok, St};
handle_event({error, _, {Pid, Format, Args}}, #state{sasl = true} = State) ->
{ConMsg, FileMsg} = get_log_messages(Pid, error, Format, Args),
- ok = disk_log:blog(?DISK_LOGGER, FileMsg),
- ok = io:put_chars(ConMsg),
+ log(State, ConMsg, FileMsg),
{ok, State};
handle_event(_Event, State) ->
{ok, State}.
@@ -153,18 +143,18 @@ handle_call({set_level_integer, NewLevel}, State) ->
ets:insert(?MODULE, {level, NewLevel}),
{ok, ok, State#state{level = NewLevel}}.
-handle_info({disk_log, _Node, _Log, {error_status, Status}}, _State) ->
- io:format("Disk logger error: ~p~n", [Status]),
- % couch_event_sup will restart us.
- remove_handler;
handle_info(_Info, State) ->
{ok, State}.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
-terminate(_Arg, _State) ->
- ok = disk_log:close(?DISK_LOGGER).
+terminate(_Arg, #state{fd = Fd}) ->
+ file:close(Fd).
+
+log(#state{fd = Fd}, ConsoleMsg, FileMsg) ->
+ ok = io:put_chars(ConsoleMsg),
+ ok = io:put_chars(Fd, FileMsg).
get_log_messages(Pid, Level, Format, Args) ->
ConsoleMsg = unicode:characters_to_binary(io_lib:format(
http://git-wip-us.apache.org/repos/asf/couchdb/blob/6228b178/test/etap/172-os-daemon-errors.t
----------------------------------------------------------------------
diff --git a/test/etap/172-os-daemon-errors.t b/test/etap/172-os-daemon-errors.t
index 39bdfee..bde5c6f 100755
--- a/test/etap/172-os-daemon-errors.t
+++ b/test/etap/172-os-daemon-errors.t
@@ -56,7 +56,6 @@ main(_) ->
test() ->
couch_config:start_link(config_files()),
- couch_log:start_link(),
couch_os_daemons:start_link(),
etap:diag("Daemon not executable."),