[logback-dev] tracking receivers?

Ceki Gülcü ceki at qos.ch
Mon Apr 22 14:39:41 CEST 2013


On 4/22/2013 12:05 PM, Harris, Carl wrote:

 > Yes, it makes sense to track them.
 >
 > My understanding of both LoggerContext.stop and LoggerContext.reset
 > was apparently a bit muddled.
 >
 > Seems like there are two possible approaches to dealing with receivers
 > during (re-)configuration:
 >
 > 1. In LoggerContext.reset, we could stop() all of the receivers in the
 > bag.  Stopping the receiver closes all open connections, and in the
 > case of a passive receiver also closes the listening ServerSocket.  If
 > the receiver were stopped during a reset, it would be okay to recreate
 > it.  It may be also be desirable to use ServerSocket.setReuseAddress
 > to ensure that the local address for a passive receiver can be
 > re-bound.

Stopping all receivers and related threads in response to
Context.reset would clean the slate, assuming new receivers can be
bound to the port about to be relinquished. Setting
ServerSocket.setReuseAddress(true) gives us just that.


 > 2.  We could add a name attribute to the receiver and in
 > ReceiverAction.begin, we could check the bag to see if a receiver of
 > the same name has already been created.  If a receiver with the same
 > name has already been created, we would not create it again, and in
 > ReceiverAction.end, we would not invoke the existing receiver's start
 > method.

That would work fine if the parameters of the named receiver did not
change in the new configuration. However, if those parameters were to
change, then the 1st alternative would work better.

 > In either case, in order for the receivers to be cleaned up properly,
 > we will need to stop all of the receivers in the bag.  If we choose
 > option 2, we will still need to modify LoggerContext.stop so that it
 > stops all receivers in the bag.

Naming the receivers and placing them in a map by name would allow
users to retrieve a receiver by name and set its properties
programmatically.

Considering the above, shall we go for option 1 and also place the
receivers in in map by name?

--
Ceki



More information about the logback-dev mailing list