From 8759b87a29c1318075e277eb35930396e35b1a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Thu, 5 Jul 2018 09:01:49 +0200 Subject: Add a logger transport option I had to use the process dictionary to work around the current interface for one log call. You have been warned. --- src/ranch_acceptor.erl | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'src/ranch_acceptor.erl') diff --git a/src/ranch_acceptor.erl b/src/ranch_acceptor.erl index ada8016..0224f9e 100644 --- a/src/ranch_acceptor.erl +++ b/src/ranch_acceptor.erl @@ -14,17 +14,17 @@ -module(ranch_acceptor). --export([start_link/3]). --export([loop/3]). +-export([start_link/4]). +-export([loop/4]). --spec start_link(inet:socket(), module(), pid()) +-spec start_link(inet:socket(), module(), module(), pid()) -> {ok, pid()}. -start_link(LSocket, Transport, ConnsSup) -> - Pid = spawn_link(?MODULE, loop, [LSocket, Transport, ConnsSup]), +start_link(LSocket, Transport, Logger, ConnsSup) -> + Pid = spawn_link(?MODULE, loop, [LSocket, Transport, Logger, ConnsSup]), {ok, Pid}. --spec loop(inet:socket(), module(), pid()) -> no_return(). -loop(LSocket, Transport, ConnsSup) -> +-spec loop(inet:socket(), module(), module(), pid()) -> no_return(). +loop(LSocket, Transport, Logger, ConnsSup) -> _ = case Transport:accept(LSocket, infinity) of {ok, CSocket} -> case Transport:controlling_process(CSocket, ConnsSup) of @@ -39,21 +39,23 @@ loop(LSocket, Transport, ConnsSup) -> %% We can't accept anymore anyway, so we might as well wait %% a little for the situation to resolve itself. {error, emfile} -> - error_logger:warning_msg("Ranch acceptor reducing accept rate: out of file descriptors~n"), + ranch:log(warning, + "Ranch acceptor reducing accept rate: out of file descriptors~n", + [], Logger), receive after 100 -> ok end; %% We want to crash if the listening socket got closed. {error, Reason} when Reason =/= closed -> ok end, - flush(), - ?MODULE:loop(LSocket, Transport, ConnsSup). + flush(Logger), + ?MODULE:loop(LSocket, Transport, Logger, ConnsSup). -flush() -> +flush(Logger) -> receive Msg -> - error_logger:error_msg( + ranch:log(warning, "Ranch acceptor received unexpected message: ~p~n", - [Msg]), - flush() + [Msg], Logger), + flush(Logger) after 0 -> ok end. -- cgit v1.2.3