Apache Log4cxx  Version 1.2.0
Loading...
Searching...
No Matches
log4cxx::net::XMLSocketAppender Class Reference

Sends spi::LoggingEvent elements to a remote a log server, usually in XML format. More...

#include <xmlsocketappender.h>

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

Public Member Functions

 XMLSocketAppender ()
 
 ~XMLSocketAppender ()
 
 XMLSocketAppender (helpers::InetAddressPtr address, int port)
 Connects to remote server at address and port.
 
 XMLSocketAppender (const LogString &host, int port)
 Connects to remote server at host and port.
 
- Public Member Functions inherited from log4cxx::net::SocketAppenderSkeleton
 SocketAppenderSkeleton (int defaultPort, int reconnectionDelay)
 
 ~SocketAppenderSkeleton ()
 
 SocketAppenderSkeleton (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 (helpers::Pool &p) 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.
 
bool requiresLayout () const override
 This appender does not use a layout.
 
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 LogStringgetRemoteHost () 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 fireConnector ()
 
void setOption (const LogString &option, const LogString &value) override
 Set option to value.
 
- Public Member Functions inherited from log4cxx::AppenderSkeleton
 AppenderSkeleton ()
 
 AppenderSkeleton (const LayoutPtr &layout)
 
virtual ~AppenderSkeleton ()
 
void finalize ()
 Finalize this appender by calling the derived class' close method.
 
void activateOptions (helpers::Pool &) override
 Activate the options that were previously set with calls to option setters.
 
void setOption (const LogString &option, const LogString &value) override
 Set option to value.
 
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, helpers::Pool &pool) override
 This method performs threshold checks and invokes filters before delegating actual logging to the subclasses specific AppenderSkeleton::append method.
 
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.
 
- Public Member Functions inherited from log4cxx::Appender
virtual ~Appender ()
 
virtual void addFilter (const spi::FilterPtr newFilter)=0
 Add a filter to the end of the filter list.
 
virtual spi::FilterPtr getFilter () const =0
 Returns the head Filter.
 
virtual void clearFilters ()=0
 Clear the list of filters by removing all the filters in it.
 
virtual void close ()=0
 Release any resources allocated within the appender such as file handles, network connections, etc.
 
virtual void doAppend (const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &pool)=0
 Log in Appender specific way.
 
virtual LogString getName () const =0
 Get the name of this appender.
 
virtual void setLayout (const LayoutPtr layout)=0
 Set the Layout for this appender.
 
virtual LayoutPtr getLayout () const =0
 Returns this appenders layout.
 
virtual void setName (const LogString &name)=0
 Set the name of this appender.
 
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 ()
 
virtual void activateOptions (helpers::Pool &p)=0
 Activate the options that were previously set with calls to option setters.
 
virtual void setOption (const LogString &option, const LogString &value)=0
 Set option to value.
 
- Public Member Functions inherited from log4cxx::helpers::Object
virtual ~Object ()
 
virtual const helpers::ClassgetClass () const =0
 
virtual bool instanceof (const Class &clazz) const =0
 
virtual const void * cast (const Class &clazz) const =0
 

Static Public Attributes

static int DEFAULT_PORT
 The default port number of remote logging server (4560).
 
static int DEFAULT_RECONNECTION_DELAY
 The default reconnection delay (30000 milliseconds or 30 seconds).
 
static const int MAX_EVENT_LEN
 Unused.
 

Protected Member Functions

void setSocket (log4cxx::helpers::SocketPtr &socket, helpers::Pool &p) override
 
void cleanUp (helpers::Pool &p) override
 
int getDefaultDelay () const override
 
int getDefaultPort () const override
 
void append (const spi::LoggingEventPtr &event, helpers::Pool &pool) override
 Subclasses of AppenderSkeleton should implement this method to perform actual logging.
 
- Protected Member Functions inherited from log4cxx::net::SocketAppenderSkeleton
 SocketAppenderSkeleton (std::unique_ptr< SocketAppenderSkeletonPriv > priv)
 
virtual void setSocket (log4cxx::helpers::SocketPtr &socket, log4cxx::helpers::Pool &p)=0
 
virtual void cleanUp (log4cxx::helpers::Pool &p)=0
 
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, log4cxx::helpers::Pool &p)=0
 Subclasses of AppenderSkeleton should implement this method to perform actual logging.
 
void doAppendImpl (const spi::LoggingEventPtr &event, log4cxx::helpers::Pool &pool)
 

Detailed Description

Sends spi::LoggingEvent elements to a remote a log server, usually in XML format.

Here is an example configuration that writes JSON to the TCP input plugin of a fluent-bit log server running on the same system as the application:

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="A1" class="XMLSocketAppender">
<param name="RemoteHost" value="localhost" />
<param name="Port" value="5170" />
<layout class="JSONLayout"/>
</appender>
<root>
<priority value ="INFO" />
<appender-ref ref="A1" />
</root>
</log4j:configuration>

XMLSocketAppender 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. Consequently, if the server is reachable, then 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 thread 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.
  • Even if an XMLSocketAppender is no longer attached to any logger, it will not be destroyed in the presence of a connector thread. A connector thread exists only if the connection to the server is down. To avoid this destruction problem, you should close the the XMLSocketAppender explicitly. See also next item.

    Long lived applications which create/destroy many XMLSocketAppender instances should be aware of this destruction problem. Most other applications can safely ignore it.
  • If the application hosting the XMLSocketAppender exits before the XMLSocketAppender 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 XMLSocketAppender either explicitly or by calling the LogManager::shutdown method before exiting the application.

Constructor & Destructor Documentation

◆ XMLSocketAppender() [1/3]

log4cxx::net::XMLSocketAppender::XMLSocketAppender ( )

◆ ~XMLSocketAppender()

log4cxx::net::XMLSocketAppender::~XMLSocketAppender ( )

◆ XMLSocketAppender() [2/3]

log4cxx::net::XMLSocketAppender::XMLSocketAppender ( helpers::InetAddressPtr  address,
int  port 
)

Connects to remote server at address and port.

◆ XMLSocketAppender() [3/3]

log4cxx::net::XMLSocketAppender::XMLSocketAppender ( const LogString host,
int  port 
)

Connects to remote server at host and port.

Member Function Documentation

◆ append()

void log4cxx::net::XMLSocketAppender::append ( const spi::LoggingEventPtr event,
helpers::Pool p 
)
overrideprotectedvirtual

Subclasses of AppenderSkeleton should implement this method to perform actual logging.

See also AppenderSkeleton::doAppend method.

Implements log4cxx::AppenderSkeleton.

◆ cleanUp()

void log4cxx::net::XMLSocketAppender::cleanUp ( helpers::Pool p)
overrideprotectedvirtual

◆ getDefaultDelay()

int log4cxx::net::XMLSocketAppender::getDefaultDelay ( ) const
overrideprotectedvirtual

◆ getDefaultPort()

int log4cxx::net::XMLSocketAppender::getDefaultPort ( ) const
overrideprotectedvirtual

◆ setSocket()

void log4cxx::net::XMLSocketAppender::setSocket ( log4cxx::helpers::SocketPtr &  socket,
helpers::Pool p 
)
overrideprotectedvirtual

Member Data Documentation

◆ DEFAULT_PORT

int log4cxx::net::XMLSocketAppender::DEFAULT_PORT
static

The default port number of remote logging server (4560).

◆ DEFAULT_RECONNECTION_DELAY

int log4cxx::net::XMLSocketAppender::DEFAULT_RECONNECTION_DELAY
static

The default reconnection delay (30000 milliseconds or 30 seconds).

◆ MAX_EVENT_LEN

const int log4cxx::net::XMLSocketAppender::MAX_EVENT_LEN
static

Unused.


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