Author: chand Date: Thu Jan 29 14:25:00 2015 New Revision: 1655676 URL: http://svn.apache.org/r1655676 Log: LOGCXX-442:Using non standard ports with syslog.Credits to 'Ulrik'.
Modified: incubator/log4cxx/trunk/src/main/cpp/syslogappender.cpp incubator/log4cxx/trunk/src/main/cpp/syslogwriter.cpp incubator/log4cxx/trunk/src/main/include/log4cxx/helpers/syslogwriter.h incubator/log4cxx/trunk/src/main/include/log4cxx/net/syslogappender.h Modified: incubator/log4cxx/trunk/src/main/cpp/syslogappender.cpp URL: http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/cpp/syslogappender.cpp?rev=1655676&r1=1655675&r2=1655676&view=diff ============================================================================== --- incubator/log4cxx/trunk/src/main/cpp/syslogappender.cpp (original) +++ incubator/log4cxx/trunk/src/main/cpp/syslogappender.cpp Thu Jan 29 14:25:00 2015 @@ -323,6 +323,17 @@ void SyslogAppender::setSyslogHost(const delete this->sw; this->sw = 0; } + LogString slHost = syslogHost1; + int slHostPort = -1; + + LogString::size_type colonPos = 0; + colonPos = slHost.rfind(':'); + if (colonPos != LogString::npos) + { + slHostPort = StringHelper::toInt(slHost.substr(colonPos+1)); + // Erase the :port part of the host name + slHost.erase( colonPos ); + } // On the local host, we can directly use the system function 'syslog' // if it is available (cf. append) @@ -330,9 +341,11 @@ void SyslogAppender::setSyslogHost(const if (syslogHost1 != LOG4CXX_STR("localhost") && syslogHost1 != LOG4CXX_STR("127.0.0.1") && !syslogHost1.empty()) #endif - this->sw = new SyslogWriter(syslogHost1); + if (slHostPort >= 0) this->sw = new SyslogWriter(slHost, slHostPort); + else this->sw = new SyslogWriter(slHost); - this->syslogHost = syslogHost1; + this->syslogHost = slHost; + this->syslogHostPort = slHostPort; } Modified: incubator/log4cxx/trunk/src/main/cpp/syslogwriter.cpp URL: http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/cpp/syslogwriter.cpp?rev=1655676&r1=1655675&r2=1655676&view=diff ============================================================================== --- incubator/log4cxx/trunk/src/main/cpp/syslogwriter.cpp (original) +++ incubator/log4cxx/trunk/src/main/cpp/syslogwriter.cpp Thu Jan 29 14:25:00 2015 @@ -26,13 +26,11 @@ #include <log4cxx/helpers/datagrampacket.h> #include <log4cxx/helpers/transcoder.h> -#define SYSLOG_PORT 514 - using namespace log4cxx; using namespace log4cxx::helpers; -SyslogWriter::SyslogWriter(const LogString& syslogHost1) -: syslogHost(syslogHost1) +SyslogWriter::SyslogWriter(const LogString& syslogHost1, int syslogHostPort1) +: syslogHost(syslogHost1), syslogHostPort(syslogHostPort1) { try { @@ -61,7 +59,7 @@ void SyslogWriter::write(const LogString DatagramPacketPtr packet( new DatagramPacket((void*) data.data(), data.length(), - address, SYSLOG_PORT)); + address, syslogHostPort)); ds->send(packet); } Modified: incubator/log4cxx/trunk/src/main/include/log4cxx/helpers/syslogwriter.h URL: http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/include/log4cxx/helpers/syslogwriter.h?rev=1655676&r1=1655675&r2=1655676&view=diff ============================================================================== --- incubator/log4cxx/trunk/src/main/include/log4cxx/helpers/syslogwriter.h (original) +++ incubator/log4cxx/trunk/src/main/include/log4cxx/helpers/syslogwriter.h Thu Jan 29 14:25:00 2015 @@ -34,11 +34,13 @@ class LOG4CXX_EXPORT SyslogWriter { public: - SyslogWriter(const LogString& syslogHost); + #define SYSLOG_PORT 514 + SyslogWriter(const LogString& syslogHost, int syslogHostPort = SYSLOG_PORT); void write(const LogString& string); private: LogString syslogHost; + int syslogHostPort; InetAddressPtr address; DatagramSocketPtr ds; }; Modified: incubator/log4cxx/trunk/src/main/include/log4cxx/net/syslogappender.h URL: http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/include/log4cxx/net/syslogappender.h?rev=1655676&r1=1655675&r2=1655676&view=diff ============================================================================== --- incubator/log4cxx/trunk/src/main/include/log4cxx/net/syslogappender.h (original) +++ incubator/log4cxx/trunk/src/main/include/log4cxx/net/syslogappender.h Thu Jan 29 14:25:00 2015 @@ -129,6 +129,7 @@ namespace log4cxx bool facilityPrinting; helpers::SyslogWriter * sw; LogString syslogHost; + int syslogHostPort; private: SyslogAppender(const SyslogAppender&); SyslogAppender& operator=(const SyslogAppender&);