You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rm...@apache.org on 2022/10/23 17:10:38 UTC
[logging-log4cxx] branch LOGCXX-518 updated: made the multiprocessrollingfileappender optional
This is an automated email from the ASF dual-hosted git repository.
rmiddleton pushed a commit to branch LOGCXX-518
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git
The following commit(s) were added to refs/heads/LOGCXX-518 by this push:
new 4bb7a172 made the multiprocessrollingfileappender optional
4bb7a172 is described below
commit 4bb7a1722dd49f2bc6d6449427601a5e280d8718
Author: Robert Middleton <ro...@rm5248.com>
AuthorDate: Sun Oct 23 13:10:31 2022 -0400
made the multiprocessrollingfileappender optional
---
CMakeLists.txt | 1 +
src/main/cpp/CMakeLists.txt | 15 +++++---
src/main/cpp/timebasedrollingpolicy.cpp | 43 +++++++++++++++++++---
src/main/include/CMakeLists.txt | 7 ++++
src/main/include/log4cxx/log4cxx.h.in | 1 +
.../log4cxx/rolling/timebasedrollingpolicy.h | 1 -
6 files changed, 57 insertions(+), 11 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f67d1c6b..2dc1f16b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -288,3 +288,4 @@ message(STATUS " OutputDebugStringAppender ....... : ${LOG4CXX_NETWORKING_SUPPO
message(STATUS " ConsoleAppender ................. : ON")
message(STATUS " FileAppender .................... : ON")
message(STATUS " RollingFileAppender ............. : ON")
+message(STATUS " MultiprocessRollingFileAppender . : ${LOG4CXX_MULTIPROCESS_ROLLING_FILE_APPENDER}")
diff --git a/src/main/cpp/CMakeLists.txt b/src/main/cpp/CMakeLists.txt
index 4460144c..99066a10 100644
--- a/src/main/cpp/CMakeLists.txt
+++ b/src/main/cpp/CMakeLists.txt
@@ -27,8 +27,10 @@ else()
endif()
add_dependencies(log4cxx configure_log4cxx)
+set(extra_classes "")
+
if(LOG4CXX_NETWORKING_SUPPORT)
- set(networking_classes
+ set(extra_classes ${extra_classes}
datagrampacket.cpp
datagramsocket.cpp
aprdatagramsocket.cpp
@@ -44,8 +46,12 @@ if(LOG4CXX_NETWORKING_SUPPORT)
syslogwriter.cpp
syslogappender.cpp
)
-else()
- set(networking_classes "")
+endif()
+
+if()
+ set(extra_classes ${extra_classes}
+ multiprocessrollingfileappender.cpp
+ )
endif()
target_sources(log4cxx
@@ -128,7 +134,6 @@ target_sources(log4cxx
messagebuffer.cpp
messagepatternconverter.cpp
methodlocationpatternconverter.cpp
- multiprocessrollingfileappender.cpp
nameabbreviator.cpp
namepatternconverter.cpp
ndc.cpp
@@ -186,7 +191,7 @@ target_sources(log4cxx
writerappender.cpp
xmllayout.cpp
zipcompressaction.cpp
- ${networking_classes}
+ ${extra_classes}
)
set_target_properties(log4cxx PROPERTIES
VERSION ${LIBLOG4CXX_LIB_VERSION}
diff --git a/src/main/cpp/timebasedrollingpolicy.cpp b/src/main/cpp/timebasedrollingpolicy.cpp
index 15ca7563..1d13d93b 100644
--- a/src/main/cpp/timebasedrollingpolicy.cpp
+++ b/src/main/cpp/timebasedrollingpolicy.cpp
@@ -18,6 +18,7 @@
#pragma warning ( disable: 4231 4251 4275 4786 )
#endif
+#include <log4cxx/log4cxx.h>
#include <log4cxx/logstring.h>
#include <log4cxx/rolling/timebasedrollingpolicy.h>
#include <log4cxx/pattern/filedatepatternconverter.h>
@@ -32,6 +33,7 @@
#include <log4cxx/fileappender.h>
#include <log4cxx/boost-std-configuration.h>
#include <iostream>
+#include <apr_mmap.h>
using namespace log4cxx;
using namespace log4cxx::rolling;
@@ -41,12 +43,16 @@ using namespace log4cxx::pattern;
IMPLEMENT_LOG4CXX_OBJECT(TimeBasedRollingPolicy)
struct TimeBasedRollingPolicy::TimeBasedRollingPolicyPrivate{
+#if LOG4CXX_HAS_MULTIPROCESS_ROLLING_FILE_APPENDER
TimeBasedRollingPolicyPrivate() :
_mmap(nullptr),
_file_map(nullptr),
_lock_file(nullptr),
bAlreadyInitialized(false),
bRefreshCurFile(false){}
+#else
+ TimeBasedRollingPolicyPrivate(){}
+#endif
/**
* Time for next determination if time for rollover.
@@ -58,6 +64,11 @@ struct TimeBasedRollingPolicy::TimeBasedRollingPolicyPrivate{
*/
LogString lastFileName;
+ /**
+ * Length of any file type suffix (.gz, .zip).
+ */
+ int suffixLength;
+
/**
* mmap pointer
*/
@@ -103,11 +114,6 @@ struct TimeBasedRollingPolicy::TimeBasedRollingPolicyPrivate{
* */
LogString _fileNamePattern;
- /**
- * Length of any file type suffix (.gz, .zip).
- */
- int suffixLength;
-
bool multiprocess = false;
};
@@ -116,6 +122,7 @@ struct TimeBasedRollingPolicy::TimeBasedRollingPolicyPrivate{
#define LOCK_FILE_SUFFIX ".maplck"
#define MAX_FILE_LEN 2048
+#if LOG4CXX_HAS_MULTIPROCESS_ROLLING_FILE_APPENDER
bool TimeBasedRollingPolicy::isMapFileEmpty(log4cxx::helpers::Pool& pool)
{
apr_finfo_t finfo;
@@ -235,6 +242,29 @@ int TimeBasedRollingPolicy::unLockMMapFile()
return stat;
}
+#else
+int TimeBasedRollingPolicy::createMMapFile(const std::string&, log4cxx::helpers::Pool&) {
+ return 0;
+}
+
+bool TimeBasedRollingPolicy::isMapFileEmpty(log4cxx::helpers::Pool&){
+ return true;
+}
+
+void TimeBasedRollingPolicy::initMMapFile(const LogString&, log4cxx::helpers::Pool&){}
+
+int TimeBasedRollingPolicy::lockMMapFile(int){
+ return 0;
+}
+
+int TimeBasedRollingPolicy::unLockMMapFile(){
+ return 0;
+}
+
+const std::string TimeBasedRollingPolicy::createFile(const std::string&, const std::string&, log4cxx::helpers::Pool&){
+ return "";
+}
+#endif
TimeBasedRollingPolicy::TimeBasedRollingPolicy() :
m_priv(std::make_unique<TimeBasedRollingPolicyPrivate>())
@@ -483,5 +513,8 @@ bool TimeBasedRollingPolicy::isTriggeringEvent(
}
void TimeBasedRollingPolicy::setMultiprocess(bool multiprocess){
+#if LOG4CXX_HAS_MULTIPROCESS_ROLLING_FILE_APPENDER
+ // If we don't have the multiprocess stuff, disregard any attempt to set this value
m_priv->multiprocess = multiprocess;
+#endif
}
diff --git a/src/main/include/CMakeLists.txt b/src/main/include/CMakeLists.txt
index dc168818..06dabcf4 100644
--- a/src/main/include/CMakeLists.txt
+++ b/src/main/include/CMakeLists.txt
@@ -65,6 +65,13 @@ else()
set(NETWORKING_SUPPORT 0)
endif()
+option(LOG4CXX_MULTIPROCESS_ROLLING_FILE_APPENDER "Support multiple processes logging to the same file" OFF)
+if(LOG4CXX_MULTIPROCESS_ROLLING_FILE_APPENDER)
+ set(MULTIPROCESS_RFA 1)
+else()
+ set(MULTIPROCESS_RFA 0)
+endif()
+
# Configure log4cxx_private.h
set(LOG4CXX_CHARSET "locale" CACHE STRING "LogString characters, choice of locale (default), utf-8, ISO-8859-1, US-ASCII, EBCDIC")
set_property(CACHE LOG4CXX_CHARSET PROPERTY STRINGS "locale" "utf-8" "ISO-8859-1" "US-ASCII" "EBCDIC")
diff --git a/src/main/include/log4cxx/log4cxx.h.in b/src/main/include/log4cxx/log4cxx.h.in
index 663157a6..88470937 100644
--- a/src/main/include/log4cxx/log4cxx.h.in
+++ b/src/main/include/log4cxx/log4cxx.h.in
@@ -49,6 +49,7 @@
#define LOG4CXX_UNICHAR_API @UNICHAR_API@
#define LOG4CXX_CFSTRING_API @CFSTRING_API@
#define LOG4CXX_HAS_NETWORKING @NETWORKING_SUPPORT@
+#define LOG4CXX_HAS_MULTIPROCESS_ROLLING_FILE_APPENDER @MULTIPROCESS_RFA@
typedef long long log4cxx_int64_t;
#define LOG4CXX_USE_GLOBAL_SCOPE_TEMPLATE 0
diff --git a/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h b/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
index db60fb0d..6809bbe6 100755
--- a/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
+++ b/src/main/include/log4cxx/rolling/timebasedrollingpolicy.h
@@ -23,7 +23,6 @@
#include <log4cxx/rolling/triggeringpolicy.h>
#include <log4cxx/writerappender.h>
#include <log4cxx/helpers/outputstream.h>
-#include <apr_mmap.h>
#include <functional>
#if defined(_MSC_VER)