Apache Log4cxx  Version 2.0.0
Loading...
Searching...
No Matches
log4cxx::net::SocketAppenderSkeleton Class Referenceabstract

Abstract base class that sends spi::LoggingEvent elements to a remote server. More...

#include <socketappenderskeleton.h>

Inheritance diagram for log4cxx::net::SocketAppenderSkeleton:
log4cxx::AppenderSkeleton log4cxx::Appender log4cxx::spi::OptionHandler log4cxx::helpers::Object log4cxx::net::XMLSocketAppender

Public Member Functions

 SocketAppenderSkeleton (int defaultPort, int reconnectionDelay)
 ~SocketAppenderSkeleton ()
 SocketAppenderSkeleton (const helpers::InetAddressPtr &address, int port, int reconnectionDelay)
 Connects to remote server at address and port.
 SocketAppenderSkeleton (const LogString &host, int port, int reconnectionDelay)
 Connects to remote server at host and port.
void activateOptions () override
 Activate the options that were previously set with calls to option setters.
void close () override
 Release any resources allocated within the appender such as file handles, network connections, etc.
void setRemoteHost (const LogString &host)
 The RemoteHost option takes a string value which should be the host name of the server where a Apache Chainsaw or compatible is running.
const LogString & getRemoteHost () const
 Returns value of the RemoteHost option.
void setPort (int port1)
 The Port option takes a positive integer representing the port where the server is waiting for connections.
int getPort () const
 Returns value of the Port option.
void setLocationInfo (bool locationInfo1)
 The LocationInfo option takes a boolean value.
bool getLocationInfo () const
 Returns value of the LocationInfo option.
void setReconnectionDelay (int reconnectionDelay1)
 The ReconnectionDelay option takes a positive integer representing the number of milliseconds to wait between each failed connection attempt to the server.
int getReconnectionDelay () const
 Returns value of the ReconnectionDelay option.
void setSocketSubclass (const LogString &newSubclass)
 Use newSubclass as the helpers::Socket interface instead of the default implementation.
const LogString & getSocketSubclass () const
 The class name used for the helpers::Socket interface implemention.
void setOption (const LogString &option, const LogString &value) override
 Set option to value.
void activateOptions (helpers::Pool &)
Public Member Functions inherited from log4cxx::AppenderSkeleton
 AppenderSkeleton ()
 AppenderSkeleton (const LayoutPtr &layout)
virtual ~AppenderSkeleton ()
void addFilter (const spi::FilterPtr newFilter) override
 Add a filter to end of the filter list.
void clearFilters () override
 Clear the filters chain.
const spi::ErrorHandlerPtr getErrorHandler () const
 Return the currently set spi::ErrorHandler for this Appender.
spi::FilterPtr getFilter () const override
 Returns the head Filter.
const spi::FilterPtr getFirstFilter () const
 Return the first filter in the filter chain for this Appender.
LayoutPtr getLayout () const override
 Returns the layout of this appender.
LogString getName () const override
 Returns the name of this Appender.
const LevelPtr getThreshold () const
 Returns this appenders threshold level.
bool isAsSevereAsThreshold (const LevelPtr &level) const
 Check whether the message level is below the appender's threshold.
void doAppend (const spi::LoggingEventPtr &event) override
 Call AppenderSkeleton::doAppendImpl after acquiring a lock that prevents other threads from concurrently executing AppenderSkeleton::doAppendImpl.
void setErrorHandler (const spi::ErrorHandlerPtr eh)
 Set the ErrorHandler for this Appender.
void setLayout (const LayoutPtr layout1) override
 Set the layout for this appender.
void setName (const LogString &name1) override
 Set the name of this Appender.
void setThreshold (const LevelPtr &threshold)
 Set the threshold level.
void activateOptions (helpers::Pool &)
Public Member Functions inherited from log4cxx::Appender
virtual ~Appender ()
void doAppend (const spi::LoggingEventPtr &event, helpers::Pool &pool)
virtual bool requiresLayout () const =0
 Configurators call this method to determine if the appender requires a layout.
Public Member Functions inherited from log4cxx::spi::OptionHandler
virtual ~OptionHandler ()
void activateOptions (helpers::Pool &)
Public Member Functions inherited from log4cxx::helpers::Object
virtual ~Object ()
virtual const helpers::Class & getClass () const =0
virtual bool instanceof (const Class &clazz) const =0
virtual const void * cast (const Class &clazz) const =0

Protected Member Functions

 SocketAppenderSkeleton (std::unique_ptr< SocketAppenderSkeletonPriv > priv)
virtual int getDefaultDelay () const =0
virtual int getDefaultPort () const =0
Protected Member Functions inherited from log4cxx::AppenderSkeleton
 AppenderSkeleton (LOG4CXX_PRIVATE_PTR(AppenderSkeletonPrivate) priv)
virtual void append (const spi::LoggingEventPtr &event)=0
 Subclasses of AppenderSkeleton must implement this method to perform actual logging.
void doAppendImpl (const spi::LoggingEventPtr &event)
 Compare event level against the appender threshold and check that event is accepted.
bool isAccepted (const spi::LoggingEventPtr &event) const
 Does no attached filter deny event or does an attached filter accept event?

Detailed Description

Abstract base class that sends spi::LoggingEvent elements to a remote server.

This appender has the following properties:

  • The event will be logged with the same time stamp, NDC, location info as if it were logged locally by the client.
  • Remote logging uses the TCP protocol, so if the server is reachable, log events will eventually arrive at the server.
  • If the remote server is down, the logging requests are simply dropped. However, if and when the server comes back up, then event transmission is resumed transparently. This transparent reconneciton is performed by a connector task which periodically attempts to connect to the server.
  • Logging events are automatically buffered by the native TCP implementation. This means that if the link to server is slow but still faster than the rate of (log) event production by the client, the client will not be affected by the slow network connection. However, if the network connection is slower then the rate of event production, then the client can only progress at the network rate. In particular, if the network link to the the server is down, the client will be blocked. On the other hand, if the network link is up, but the server is down, the client will not be blocked when making log requests but the log events will be lost due to server unavailability.
  • If the application hosting this appender exits before it is closed, either explicitly or subsequent to destruction, then there might be untransmitted data in the pipe which might be lost.

To avoid lost data, it is usually sufficient to close the appender either explicitly or by calling the LogManager::shutdown method before exiting the application.

A periodic task will connect when the server becomes available. It does this by attempting to open a new connection every reconnectionDelay milliseconds.

The periodic task stops trying whenever a connection is established. It will restart attempting to open a new connection to the server when a previously open connection is droppped.

Constructor & Destructor Documentation

◆ SocketAppenderSkeleton() [1/4]

log4cxx::net::SocketAppenderSkeleton::SocketAppenderSkeleton ( int defaultPort,
int reconnectionDelay )

◆ ~SocketAppenderSkeleton()

log4cxx::net::SocketAppenderSkeleton::~SocketAppenderSkeleton ( )

◆ SocketAppenderSkeleton() [2/4]

log4cxx::net::SocketAppenderSkeleton::SocketAppenderSkeleton ( const helpers::InetAddressPtr & address,
int port,
int reconnectionDelay )

Connects to remote server at address and port.

◆ SocketAppenderSkeleton() [3/4]

log4cxx::net::SocketAppenderSkeleton::SocketAppenderSkeleton ( const LogString & host,
int port,
int reconnectionDelay )

Connects to remote server at host and port.

◆ SocketAppenderSkeleton() [4/4]

log4cxx::net::SocketAppenderSkeleton::SocketAppenderSkeleton ( std::unique_ptr< SocketAppenderSkeletonPriv > priv)
protected

Member Function Documentation

◆ activateOptions() [1/2]

void log4cxx::net::SocketAppenderSkeleton::activateOptions ( )
overridevirtual

Activate the options that were previously set with calls to option setters.

Connects to the specified RemoteHost and Port.

Reimplemented from log4cxx::AppenderSkeleton.

Reimplemented in log4cxx::net::XMLSocketAppender.

◆ activateOptions() [2/2]

Deprecated
This function is deprecated and will be removed in a future version. Call activateOptions() without parameters instead.
Deprecated
Use activateOptions() without parameters instead

◆ close()

void log4cxx::net::SocketAppenderSkeleton::close ( )
overridevirtual

Release any resources allocated within the appender such as file handles, network connections, etc.

It is a programming error to append to a closed appender.

Implements log4cxx::Appender.

◆ getDefaultDelay()

virtual int log4cxx::net::SocketAppenderSkeleton::getDefaultDelay ( ) const
protectedpure virtual

◆ getDefaultPort()

virtual int log4cxx::net::SocketAppenderSkeleton::getDefaultPort ( ) const
protectedpure virtual

◆ getLocationInfo()

bool log4cxx::net::SocketAppenderSkeleton::getLocationInfo ( ) const

Returns value of the LocationInfo option.

◆ getPort()

int log4cxx::net::SocketAppenderSkeleton::getPort ( ) const

Returns value of the Port option.

◆ getReconnectionDelay()

int log4cxx::net::SocketAppenderSkeleton::getReconnectionDelay ( ) const

Returns value of the ReconnectionDelay option.

◆ getRemoteHost()

const LogString & log4cxx::net::SocketAppenderSkeleton::getRemoteHost ( ) const

Returns value of the RemoteHost option.

◆ getSocketSubclass()

const LogString & log4cxx::net::SocketAppenderSkeleton::getSocketSubclass ( ) const

The class name used for the helpers::Socket interface implemention.

◆ setLocationInfo()

void log4cxx::net::SocketAppenderSkeleton::setLocationInfo ( bool locationInfo1)

The LocationInfo option takes a boolean value.

If true, the information sent to the remote host will include location information. By default no location information is sent to the server.

◆ setOption()

void log4cxx::net::SocketAppenderSkeleton::setOption ( const LogString & option,
const LogString & value )
overridevirtual

Set option to value.

Supported options Supported values Default value
RemoteHost (1) -
Port {int} (2)
LocationInfo True,False False
SocketSubclass (3) APRSocket

(1) A valid internet address.

(2) Provided by the derived class.

(3) A registered class derived from helpers::Socket.

See also
AppenderSkeleton::setOption()

Reimplemented from log4cxx::AppenderSkeleton.

◆ setPort()

void log4cxx::net::SocketAppenderSkeleton::setPort ( int port1)

The Port option takes a positive integer representing the port where the server is waiting for connections.

◆ setReconnectionDelay()

void log4cxx::net::SocketAppenderSkeleton::setReconnectionDelay ( int reconnectionDelay1)

The ReconnectionDelay option takes a positive integer representing the number of milliseconds to wait between each failed connection attempt to the server.

The default value of this option is 30000 which corresponds to 30 seconds.

Setting this option to zero turns off reconnection capability.

◆ setRemoteHost()

void log4cxx::net::SocketAppenderSkeleton::setRemoteHost ( const LogString & host)

The RemoteHost option takes a string value which should be the host name of the server where a Apache Chainsaw or compatible is running.

◆ setSocketSubclass()

void log4cxx::net::SocketAppenderSkeleton::setSocketSubclass ( const LogString & newSubclass)

Use newSubclass as the helpers::Socket interface instead of the default implementation.


The documentation for this class was generated from the following file: