log4net.AppenderAppenderSkeleton
log4net.AppenderBufferingAppenderSkeleton
log4net.AppenderRemotingAppender
Namespace: log4net.Appender
Assembly: log4net (in log4net.dll) Version: 2.0.6.0-.NET 4.0
The RemotingAppender type exposes the following members.
Name | Description | |
---|---|---|
RemotingAppender |
Initializes a new instance of the RemotingAppender class.
|
Name | Description | |
---|---|---|
BufferSize |
Gets or sets the size of the cyclic buffer used to hold the
logging events.
(Inherited from BufferingAppenderSkeleton.) | |
ErrorHandler |
Gets or sets the IErrorHandler for this appender.
(Inherited from AppenderSkeleton.) | |
Evaluator |
Gets or sets the ITriggeringEventEvaluator that causes the
buffer to be sent immediately.
(Inherited from BufferingAppenderSkeleton.) | |
FilterHead |
The filter chain.
(Inherited from AppenderSkeleton.) | |
Fix |
Gets or sets a the fields that will be fixed in the event
(Inherited from BufferingAppenderSkeleton.) | |
Layout |
Gets or sets the ILayout for this appender.
(Inherited from AppenderSkeleton.) | |
Lossy |
Gets or sets a value that indicates whether the appender is lossy.
(Inherited from BufferingAppenderSkeleton.) | |
LossyEvaluator |
Gets or sets the value of the ITriggeringEventEvaluator to use.
(Inherited from BufferingAppenderSkeleton.) | |
Name |
Gets or sets the name of this appender.
(Inherited from AppenderSkeleton.) | |
OnlyFixPartialEventData | Obsolete.
Gets or sets a value indicating if only part of the logging event data
should be fixed.
(Inherited from BufferingAppenderSkeleton.) | |
RequiresLayout |
Tests if this appender requires a Layout to be set.
(Inherited from AppenderSkeleton.) | |
Sink |
Gets or sets the URL of the well-known object that will accept
the logging events.
| |
Threshold |
Gets or sets the threshold Level of this appender.
(Inherited from AppenderSkeleton.) |
Name | Description | |
---|---|---|
ActivateOptions |
Initialize the appender based on the options set
(Overrides BufferingAppenderSkeletonActivateOptions.) | |
AddFilter |
Adds a filter to the end of the filter chain.
(Inherited from AppenderSkeleton.) | |
Append(LoggingEvent) |
Append a bulk array of logging events.
(Inherited from AppenderSkeleton.) | |
Append(LoggingEvent) |
This method is called by the DoAppend(LoggingEvent) method.
(Inherited from BufferingAppenderSkeleton.) | |
ClearFilters |
Clears the filter list for this appender.
(Inherited from AppenderSkeleton.) | |
Close |
Closes the appender and release resources.
(Inherited from AppenderSkeleton.) | |
DoAppend(LoggingEvent) |
Performs threshold checks and invokes filters before
delegating actual logging to the subclasses specific
[M:Append(LoggingEvent)] method.
(Inherited from AppenderSkeleton.) | |
DoAppend(LoggingEvent) |
Performs threshold checks and invokes filters before
delegating actual logging to the subclasses specific
[M:Append(LoggingEvent[])] method.
(Inherited from AppenderSkeleton.) | |
Equals | (Inherited from Object.) | |
FilterEvent |
Test if the logging event should we output by this appender
(Inherited from AppenderSkeleton.) | |
Finalize |
Finalizes this appender by calling the implementation's
Close method.
(Inherited from AppenderSkeleton.) | |
Flush |
Flush the currently buffered events
(Inherited from BufferingAppenderSkeleton.) | |
Flush(Boolean) |
Flush the currently buffered events
(Inherited from BufferingAppenderSkeleton.) | |
Flush(Int32) |
Flushes any buffered log data.
(Overrides BufferingAppenderSkeletonFlush(Int32).) | |
GetHashCode |
Serves as a hash function for a particular type.
(Inherited from Object.) | |
GetType |
Gets the Type of the current instance.
(Inherited from Object.) | |
IsAsSevereAsThreshold |
Checks if the message level is below this appender's threshold.
(Inherited from AppenderSkeleton.) | |
MemberwiseClone |
Creates a shallow copy of the current Object.
(Inherited from Object.) | |
OnClose |
Override base class close.
(Overrides BufferingAppenderSkeletonOnClose.) | |
PreAppendCheck |
Called before [M:Append(LoggingEvent)] as a precondition.
(Inherited from AppenderSkeleton.) | |
RenderLoggingEvent(LoggingEvent) |
Renders the LoggingEvent to a string.
(Inherited from AppenderSkeleton.) | |
RenderLoggingEvent(TextWriter, LoggingEvent) |
Renders the LoggingEvent to a string.
(Inherited from AppenderSkeleton.) | |
SendBuffer |
Send the contents of the buffer to the remote sink.
(Overrides BufferingAppenderSkeletonSendBuffer(LoggingEvent).) | |
SendFromBuffer |
Sends the contents of the buffer.
(Inherited from BufferingAppenderSkeleton.) | |
ToString | (Inherited from Object.) |
This Appender is designed to deliver events to a remote sink. That is any object that implements the RemotingAppenderIRemoteLoggingSink 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 ILogicalThreadAffinative, across the remoting boundary. If the server is not contactable then the remoting infrastructure will clear 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 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.
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 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.