You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by sw...@apache.org on 2024/05/07 23:40:39 UTC
(logging-log4cxx) 01/01: Prevent abnormal termination when telnet appender has no layout
This is an automated email from the ASF dual-hosted git repository.
swebb2066 pushed a commit to branch telnet_appender
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
commit b3aba3904bd943241e5676af7092d8e956804800
Author: Stephen Webb <sw...@gmail.com>
AuthorDate: Wed May 8 09:40:19 2024 +1000
Prevent abnormal termination when telnet appender has no layout
---
src/main/cpp/telnetappender.cpp | 19 ++++++++++++++++++-
src/main/include/log4cxx/net/telnetappender.h | 15 +++++++++++++++
2 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/src/main/cpp/telnetappender.cpp b/src/main/cpp/telnetappender.cpp
index 349ad672..cdb4ff51 100644
--- a/src/main/cpp/telnetappender.cpp
+++ b/src/main/cpp/telnetappender.cpp
@@ -117,6 +117,10 @@ void TelnetAppender::setOption(const LogString& option,
{
setPort(OptionConverter::toInt(value, DEFAULT_PORT));
}
+ else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("MAXCONNECTIONS"), LOG4CXX_STR("maxconnections")))
+ {
+ setMaxConnections(OptionConverter::toInt(value, MAX_CONNECTIONS));
+ }
else if (StringHelper::equalsIgnoreCase(option, LOG4CXX_STR("ENCODING"), LOG4CXX_STR("encoding")))
{
setEncoding(value);
@@ -203,7 +207,10 @@ void TelnetAppender::append(const spi::LoggingEventPtr& event, Pool& p)
if (count > 0)
{
LogString msg;
- _priv->layout->format(msg, event, _priv->pool);
+ if (_priv->layout)
+ _priv->layout->format(msg, event, p);
+ else
+ msg = event->getMessage();
msg.append(LOG4CXX_STR("\r\n"));
size_t bytesSize = msg.size() * 2;
char* bytes = p.pstralloc(bytesSize);
@@ -318,3 +325,13 @@ void TelnetAppender::setPort(int port1)
{
_priv->port = port1;
}
+
+int TelnetAppender::getMaxConnections() const
+{
+ return static_cast<int>(_priv->connections.size());
+}
+
+void TelnetAppender::setMaxConnections(int newValue)
+{
+ _priv->connections.resize(newValue);
+}
diff --git a/src/main/include/log4cxx/net/telnetappender.h b/src/main/include/log4cxx/net/telnetappender.h
index 1c18b532..7232277e 100644
--- a/src/main/include/log4cxx/net/telnetappender.h
+++ b/src/main/include/log4cxx/net/telnetappender.h
@@ -115,6 +115,7 @@ class LOG4CXX_EXPORT TelnetAppender : public AppenderSkeleton
Supported options | Supported values | Default value
-------------- | ---------------- | ---------------
Port | {int} | 23
+ MaxConnections | {int} | 20
Encoding | C,UTF-8,UTF-16,UTF-16BE,UTF-16LE,646,US-ASCII,ISO646-US,ANSI_X3.4-1968,ISO-8859-1,ISO-LATIN-1 | UTF-8
\sa AppenderSkeleton::setOption()
@@ -132,6 +133,20 @@ class LOG4CXX_EXPORT TelnetAppender : public AppenderSkeleton
*/
void setPort(int port1);
+ /**
+ The number of allowed concurrent conections.
+
+ \sa setOption
+ */
+ int getMaxConnections() const;
+
+ /**
+ Set the number of allowed concurrent conections to \c newValue.
+
+ \sa setOption
+ */
+ void setMaxConnections(int newValue);
+
/** shuts down the appender. */
void close() override;