 System Object
System Objectlog4net.Appender AppenderSkeleton
log4net.Appender BufferingAppenderSkeleton
log4net.Appender RemotingAppender
Namespace: log4net.Appender
Assembly: log4net (in log4net.dll) Version: 1.2.15.0 (1.2.15.0)
This Appender is designed to deliver events to a remote sink. That is any object that implements the RemotingAppender IRemoteLoggingSink interface. It delivers the events using .NET remoting. The object to deliver events to is specified by setting the appenders Sink property.
The RemotingAppender buffers events before sending them. This allows it to make more efficient use of the remoting infrastructure.
            Once the buffer is full the events are still not sent immediately. 
            They are scheduled to be sent using a pool thread. The effect is that 
            the send occurs asynchronously. This is very important for a 
            number of non obvious reasons. The remoting infrastructure will 
            flow thread local variables (stored in the  CallContext),
            if they are marked as
CallContext),
            if they are marked as  ILogicalThreadAffinative, across the 
            remoting boundary. If the server is not contactable then
            the remoting infrastructure will clear the
ILogicalThreadAffinative, across the 
            remoting boundary. If the server is not contactable then
            the remoting infrastructure will clear the  ILogicalThreadAffinative
            objects from the
ILogicalThreadAffinative
            objects from the  CallContext. To prevent a logging failure from
            having side effects on the calling application the remoting call must be made
            from a separate thread to the one used by the application. A
CallContext. To prevent a logging failure from
            having side effects on the calling application the remoting call must be made
            from a separate thread to the one used by the application. A  ThreadPool
            thread is used for this. If no
ThreadPool
            thread is used for this. If no  ThreadPool thread is available then
            the events will block in the thread pool manager until a thread is available.
ThreadPool thread is available then
            the events will block in the thread pool manager until a thread is available.
Because the events are sent asynchronously using pool threads it is possible to close this appender before all the queued events have been sent. When closing the appender attempts to wait until all the queued events have been sent, but this will timeout after 30 seconds regardless.
            If this appender is being closed because the  ProcessExit
            event has fired it may not be possible to send all the queued events. During process
            exit the runtime limits the time that a
ProcessExit
            event has fired it may not be possible to send all the queued events. During process
            exit the runtime limits the time that a  ProcessExit
            event handler is allowed to run for. If the runtime terminates the threads before
            the queued events have been sent then they will be lost. To ensure that all events
            are sent the appender must be closed before the application exits. See 
            Shutdown  for details on how to shutdown
            log4net programmatically.
ProcessExit
            event handler is allowed to run for. If the runtime terminates the threads before
            the queued events have been sent then they will be lost. To ensure that all events
            are sent the appender must be closed before the application exits. See 
            Shutdown  for details on how to shutdown
            log4net programmatically.