Giter Club home page Giter Club logo

log4cplus / log4cplus Goto Github PK

View Code? Open in Web Editor NEW
1.6K 92.0 565.0 27.86 MB

log4cplus is a simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration. It is modelled after the Java log4j API.

Home Page: https://log4cplus.github.io/log4cplus/

License: Other

Emacs Lisp 0.02% CMake 2.76% Scheme 0.25% Shell 28.07% C++ 41.73% C 0.18% Perl 0.45% Batchfile 0.08% Makefile 19.49% M4 6.91% Roff 0.07%
log4cplus cxx logging logging-library

log4cplus's Issues

build failed vs2015

used "log4cplus-master" "msvc14" log4cplus.sln building failed ,error info:

“ThreadPool.h”: No such file or directory log4cplus log4cplus-master\src\global-init.cxx
“catch.hpp”: No such file or directory log4cplus log4cplus-master\src\mdc.cxx

log4cplus-master and log4cplus-1.2.x When calling a static library, will crash.

log4cplusS.lib
log4cplusSD.lib
log4cplusSU.lib
log4cplusSUD.lib

project use any one of those static library, it will crash.

crash address:
file: log4cplus-1.2.x\src\loglevel.cxx line48

line45-63

#define DEF_LL_STRING(_logLevel)                                        \
static tstring const & _logLevel ## _STRING ()                          \
{                                                                       \
    static tstring const str (LOG4CPLUS_TEXT (#_logLevel));             \
    return str;                                                         \
}

DEF_LL_STRING (OFF)
DEF_LL_STRING (FATAL)
DEF_LL_STRING (ERROR)
DEF_LL_STRING (WARN)
DEF_LL_STRING (INFO)
DEF_LL_STRING (DEBUG)
DEF_LL_STRING (TRACE)
DEF_LL_STRING (ALL)
DEF_LL_STRING (NOTSET)
DEF_LL_STRING (UNKNOWN)

#undef DEF_LL_STRING

line117-129

void
initializeLogLevelStrings ()
{
    OFF_STRING();
    FATAL_STRING();
    ERROR_STRING();
    WARN_STRING();
    INFO_STRING();
    DEBUG_STRING();
    TRACE_STRING();
    ALL_STRING();
    NOTSET_STRING();
}

failed link to log4cplus library built using vs2013 and original CMakeLists int tar ball

Hello,
I am building an application which links to log4cplus library.
The library project is generated using CMake with CMakeList file in the root directory of tar ball and built with VS2013 msbuild.

Build result reports unresolved external symbol link errors, which cannot find symbols log4cplus::Logger::getInstance and log4cplus::FileAppender::FileAppender.

Should I do some modification to the CMakeList file to realize my way building application?
log4cplus version is 1.2.0.

Can anybody help me ? Thanks a lot.

Incorrect behavior in DailyRollingFileAppender::close()

Currently DailyRollingFileAppender::close() uncoditionally rolls over its files. This leads to a double rollover when used in a typical server application which uses fork() to put itself to background: first time the class rolls over when a parent process exits (usually quite soon after forking the child service process) and then when child (== actual server process) exits.

What's worth the actual logging is performed to a "backup log file", while the "regular log file" remains empty (the parent process moves the regular log file to backup on its exit, and the child process doesn't detect this).

A possible workaround/solution would be not to roll logfiles upon close() or maybe selectively skip rollover stage when such a use pattern is active.

log4cplus-master\include\log4cplus\config\win32.h line 173 should comment

#if defined (__GNUC__)
#  undef LOG4CPLUS_INLINES_ARE_EXPORTED
#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
#    define LOG4CPLUS_HAVE_PRETTY_FUNCTION_MACRO
#    define LOG4CPLUS_HAVE_FUNC_SYMBOL
#  endif
// This has worked for some versions of MinGW with GCC 4.7+ but it
// appears to be broken again in 4.8.x. Thus, we disable this for GCC
// completely forever.
//
//#    define LOG4CPLUS_INLINES_ARE_EXPORTED
#  endif
#  define LOG4CPLUS_HAVE_FUNCTION_MACRO
#  if defined (__MINGW32__)
#    define LOG4CPLUS_WORKING_C_LOCALE
#  endif
#endif

log4cplus-1.2.x\src\fileappender.cxx line 1138 should be amended to filenamePattern(LOG4CPLUS_TEXT("%d.log"))

TimeBasedRollingFileAppender::TimeBasedRollingFileAppender(
    const log4cplus::helpers::Properties& properties)
    : FileAppenderBase(properties, std::ios_base::app)
    , filenamePattern("%d.log")
    , schedule(DAILY)
    , maxHistory(10)
    , cleanHistoryOnStart(false)
{
    filenamePattern = properties.getProperty(LOG4CPLUS_TEXT("FilenamePattern"));
    properties.getInt(maxHistory, LOG4CPLUS_TEXT("MaxHistory"));
    properties.getBool(cleanHistoryOnStart, LOG4CPLUS_TEXT("CleanHistoryOnStart"));
    filenamePattern = preprocessFilenamePattern(filenamePattern, schedule);

    init();
}

C++11 support

It would be nice to be able to build log4cplus with C++11. As it stands right now the usages of auto_ptr need to be removed as this is deprecated in C++11. There may be other issues as well.

Remove change of CMake target names

Running cmake on different platforms yields different targets, log4cplusS on Unix, and log4cplusSU on Windows f.i. This makes it hard for dependent targets, since TARGET_LINK_LIBRARIES must take this into account. I see no reason why the target cannot be simply called 'log4cplus', since there is only one target produced.

Crash in ~per_thread_data

Log4cplus version: log4cplus-REL_1_2_0-RC5
Compiler: Visual Studio 2015
Configuration: Release - static lib
C-Runtime: Multi-threaded-DLL /MD

I build log4cplus with the solution provided in "msvc2010" ( "log4cplusS" project) with the release configuration.

Running this code gives an nullptr exception:

#include <log4cplus\configurator.h>
#include <log4cplus\loggingmacros.h>

int main() {

    log4cplus::initialize();
    log4cplus::BasicConfigurator::doConfigure();

    LOG4CPLUS_INFO(log4cplus::Logger::getInstance("main"), "Crash me");

    return 0;
}

Callstack:

ntdll.dll!_RtlFreeHeap@12() Unknown
ucrtbase.dll!_free() Unknown
logCrash.exe!std::allocator::deallocate(char * _Ptr, unsigned int _Count) Line 911 C++
logCrash.exe!log4cplus::internal::per_thread_data::~per_thread_data() Line 260 C++
logCrash.exe!log4cplus::thread_callback(void * __formal, unsigned long fdwReason, void * __formal) Line 455 C++
[External Code]

Looking into the '_free' function shows that the first argument for '_RtlFreeHeap' (the heap) is null. So it seams that the TLS Callback 'thread_callback' is called after unloading the crt which is responsible for the heap management.

Uninitialized variables in TTCCLayout

Hello,
There is a difference in TTCCLayout definitions between 1.2.x and master branches:
https://github.com/log4cplus/log4cplus/blob/1.2.x/include/log4cplus/layout.h#L187-L190

       bool use_gmtime;
       bool thread_printing;
       bool category_prefixing;
       bool context_printing;

https://github.com/log4cplus/log4cplus/blob/master/include/log4cplus/layout.h#L188-L191

       bool use_gmtime = false;
       bool thread_printing = true;
       bool category_prefixing = true;
       bool context_printing = true;

As the result in 1.2.x when TTCCLayout is initialized by that ctor:

TTCCLayout::TTCCLayout(const log4cplus::helpers::Properties& properties)
    : Layout(properties)
    , dateFormat(properties.getProperty (LOG4CPLUS_TEXT("DateFormat"),
            internal::empty_str))
{
    properties.getBool (use_gmtime, LOG4CPLUS_TEXT("Use_gmtime"));
    properties.getBool (thread_printing, LOG4CPLUS_TEXT("ThreadPrinting"));
    properties.getBool (category_prefixing, LOG4CPLUS_TEXT("CategoryPrefixing"));
    properties.getBool (context_printing, LOG4CPLUS_TEXT("ContextPrinting"));
}

these 4 bools may remain uninitialized in release mode

Upd: VS 2015(update 1), x86, Release.

`Time DailyRollingFileAppender::calculateNextRolloverTime(const Time& t)` not consider timezone

if timezone is not UTC, then rollover won't happen at midnight!
the bug happens when call round_time... function, as time_t=0 is not midnight.

    case DAILY:
        return round_time_and_add (t, Time (24 * 60 * 60));

fix: use localtime() to get struct tm, manipulate it according to DailyRollingFileSchedule. re-assign it back to Time.

static
Time
get_next_rollover_time (DailyRollingFileSchedule sch, const Time& t, bool use_gmtime = false)
{
    Time result(t.sec(), 0);

    struct tm time;
    if (use_gmtime)
        result.gmtime(&time);
    else
        result.localtime(&time);

    time.tm_isdst = 0;
    switch (sch)
    {
    case MONTHLY:
        time.tm_mon += 1; //next month
        time.tm_mday = 1; //first day
        time.tm_hour = 0;
        time.tm_min = 0;
        time.tm_sec = 0;
        break;

    case WEEKLY:
        time.tm_mday += (7 - time.tm_wday); //next Sunday
        time.tm_hour = 0;
        time.tm_min = 0;
        time.tm_sec = 0;
        break;

    case DAILY:
        time.tm_mday += 1; //next day
        time.tm_hour = 0;
        time.tm_min = 0;
        time.tm_sec = 0;
        break;

    case TWICE_DAILY:
        if(time.tm_hour >= 12) {
            time.tm_mday += 1; //next day
            time.tm_hour = 0;
        }
        else {
            time.tm_hour = 12;
        }
        time.tm_min = 0;
        time.tm_sec = 0;
        break;

    case HOURLY:
        time.tm_min = 0;
        time.tm_sec = 0;
        break;

    case MINUTELY:
        time.tm_sec = 0;
        break;
    };
    result.setTime(&time);

    return result;
}

reversely iterate toStringMethods and fromStringMethods

In LogLevelManager::toString() and LogLevelManager::fromString() iterating the vector reversely can get the appropriate conversion function quickly when using the derived loglevels.
And also we have the change to modify the default loglevels' string, for example, just printing 'E' but not 'ERROR' when error occurred. Using the maximum field width(%.1p) cannot work, as the truncation is done from the beginning.(I cannot find out the reason.)

remove logger

Hi, I'm working on an application, in which dynamically creating logger instance is needed !
Can log4cplus remove logger instance so the memory won't increase continuously ?

Can anybody help me?
Thanks

WARNING: 'aclocal-1.15' is missing on your system.

I am unable to resolve this problem, which happens when I issue any make command:

root@debian-vb-32bit:~/cpp/log4cplus# make
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /root/cpp/log4cplus/missing aclocal-1.15 -I m4
/root/cpp/log4cplus/missing: line 81: aclocal-1.15: command not found
WARNING: 'aclocal-1.15' is missing on your system.
         You should only need it if you modified 'acinclude.m4' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'aclocal' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
Makefile:1468: recipe for target 'aclocal.m4' failed
make: *** [aclocal.m4] Error 127

Even make clean throws this error. I tried to reset git repository and tried again:

git clean -df
git checkout -- .

But running configure causes the issue to reappear. I tried to set AM_MAINTAINER_MODE([disable]) in configure.ac as recommended on Stack Overflow but the issue persists. Is there a solution to this problem?
Thanks for any help.

fatal error: ThreadPool.h: No such file or directory

I get the above error when building log4cplus on Debian 8x32bit. The full context of the error is:

make[2]: Entering directory '/root/cpp/log4cplus-master'
/bin/bash ./libtool  --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H   -I./include -I./threadpool -I./include -I./catch/single_include -DCATCH_CONFIG_PREFIX_ALL=1 -DNDEBUG -DINSIDE_LOG4CPLUS -D_GNU_SOURCE=1 -D_REENTRANT  -std=c++0x -Wall -fdiagnostics-show-caret -ftrack-macro-expansion -fdiagnostics-color=auto -Wextra -pedantic -Wstrict-aliasing -Wstrict-overflow -Woverloaded-virtual -Wold-style-cast -Wundef -Wshadow -Wformat -Wnoexcept -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wno-variadic-macros -O2 -fvisibility=hidden -pthread -MT src/liblog4cplus_la-global-init.lo -MD -MP -MF src/.deps/liblog4cplus_la-global-init.Tpo -c -o src/liblog4cplus_la-global-init.lo `test -f 'src/global-init.cxx' || echo './'`src/global-init.cxx
libtool: compile:  g++ -DHAVE_CONFIG_H -I./include -I./threadpool -I./include -I./catch/single_include -DCATCH_CONFIG_PREFIX_ALL=1 -DNDEBUG -DINSIDE_LOG4CPLUS -D_GNU_SOURCE=1 -D_REENTRANT -std=c++0x -Wall -fdiagnostics-show-caret -ftrack-macro-expansion -fdiagnostics-color=auto -Wextra -pedantic -Wstrict-aliasing -Wstrict-overflow -Woverloaded-virtual -Wold-style-cast -Wundef -Wshadow -Wformat -Wnoexcept -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wno-variadic-macros -O2 -fvisibility=hidden -pthread -MT src/liblog4cplus_la-global-init.lo -MD -MP -MF src/.deps/liblog4cplus_la-global-init.Tpo -c src/global-init.cxx  -fPIC -DPIC -o src/.libs/liblog4cplus_la-global-init.o
src/global-init.cxx:35:24: fatal error: ThreadPool.h: No such file or directory
 #include "ThreadPool.h"
                        ^
compilation terminated.
Makefile:2552: recipe for target 'src/liblog4cplus_la-global-init.lo' failed
make[2]: *** [src/liblog4cplus_la-global-init.lo] Error 1
make[2]: Leaving directory '/root/cpp/log4cplus-master'
Makefile:3619: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/root/cpp/log4cplus-master'
Makefile:1432: recipe for target 'all' failed
make: *** [all] Error 2

a bug in TimeBasedRollingFileAppender?

I am using log4cplus 1.2.0 rc3 now.

When I use TimeBasedRollingFileAppender, I find the last file will be empty after the program exits.

And I review the code, line 1213 in src/fileappender.cxx looks like a bug. why do you call rollover() function in the close() function ? after I comment the code, the last file works.

below is my config, is this a bug or my fault?

log4cplus.rootLogger=TRACE, trace

log4cplus.appender.trace=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.trace.MaxHistory=2
log4cplus.appender.trace.Filename=demo.trace
log4cplus.appender.trace.FilenamePattern=demo.trace.%d{yyyy-MM-dd-HH-mm}
log4cplus.appender.trace.CleanHistoryOnStart=false
log4cplus.appender.trace.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.trace.filters.1.LogLevelMin=TRACE
log4cplus.appender.trace.filters.1.LogLevelMax=DEBUG
log4cplus.appender.trace.filters.1.AcceptOnMatch=true
log4cplus.appender.trace.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.trace.layout=log4cplus::PatternLayout
log4cplus.appender.trace.layout.ConversionPattern=%5p: %D: demo %T [%l] %m%n

iOS cmake issue

Not sure if this is a problem with the installed cmake 3.2.1 version, or some pathing problem. After cloning the repo I did this:
$ cd iOS
$ ./scripts/cmake_ios_armv7.sh
CMake Error: The source directory "/Users/grubm012/dev/log4cplus/iOS/build_armv7" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
./scripts/cmake_ios_armv7.sh: line 18: /Users/grubm012/dev/log4cplus/iOS/scripts/../..: is a directory

iOS build complier erros

I try to follow ReadMe to build iOS armv7 but get the following errors:

$ cmake --build ./build_armv7/ --config "Debug"
=== BUILD AGGREGATE TARGET ZERO_CHECK OF PROJECT log4cplus WITH CONFIGURATION Debug ===

Check dependencies

Write auxiliary files
/bin/mkdir -p /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/log4cplus.build/Debug-iphoneos/ZERO_CHECK.build
write-file /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/log4cplus.build/Debug-iphoneos/ZERO_CHECK.build/Script-8AF528BC9FC14DBCA8E3FC3B.sh
chmod 0755 /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/log4cplus.build/Debug-iphoneos/ZERO_CHECK.build/Script-8AF528BC9FC14DBCA8E3FC3B.sh

PhaseScriptExecution CMake\ Rules iOS/build_armv7/log4cplus.build/Debug-iphoneos/ZERO_CHECK.build/Script-8AF528BC9FC14DBCA8E3FC3B.sh
    cd /Workspace/MSME/ThirdParty/log4cplus
    /bin/sh -c /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/log4cplus.build/Debug-iphoneos/ZERO_CHECK.build/Script-8AF528BC9FC14DBCA8E3FC3B.sh
echo ""

make -f /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/CMakeScripts/ReRunCMake.make
make[1]: `/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/CMakeFiles/cmake.check_cache' is up to date.

=== BUILD TARGET log4cplusS OF PROJECT log4cplus WITH CONFIGURATION Debug ===

Check dependencies

Write auxiliary files
/bin/mkdir -p /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7
write-file /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/log4cplusS.LinkFileList

CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appender.o src/appender.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Workspace/MSME/ThirdParty/log4cplus
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin:/Workspace/VoiceEngine/MaaiiSipEngine3.0.0/Doubango/doubango/specialMedia/webrtc/depot_tools"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug-iphoneos\" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -miphoneos-version-min=7.1 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug/include -I/Workspace/MSME/ThirdParty/log4cplus/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources/armv7 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden -DINSIDE_LOG4CPLUS -MMD -MT dependencies -MF /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appender.d --serialize-diagnostics /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appender.dia -c /Workspace/MSME/ThirdParty/log4cplus/src/appender.cxx -o /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appender.o
clang: warning: argument unused during compilation: '-headerpad_max_install_names'
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appender.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:114:9: error: too many arguments provided to function-like macro invocation
        "microseconds");
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appender.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/loglevel.h:35:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/vector:264:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:489:9: note: macro 'static_assert' defined here
#define static_assert(__b, __m) \
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appender.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:113:5: error: use of undeclared identifier 'static_assert'
    static_assert (std::ratio_equal<Duration::period, std::micro>::value,
    ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appender.cxx:25:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:130:20: error: unknown type name 'constexpr'
            static constexpr
                   ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:131:13: error: expected member name or ';' after declaration specifiers
            bool
            ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:149:20: error: unknown type name 'constexpr'
            static constexpr
                   ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:150:13: error: expected member name or ';' after declaration specifiers
            bool
            ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:184:51: error: no member named 'is_negative' in 'log4cplus::helpers::ConvertIntegerToStringHelper<unsigned int, char, false>'
                bool const negative = HelperType::is_negative (value);
                                      ~~~~~~~~~~~~^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:213:13: note: in instantiation of function template specialization 'log4cplus::helpers::convertIntegerToString<std::__1::basic_string<char>, unsigned int>' requested here
            convertIntegerToString (result, value);
            ^
/Workspace/MSME/ThirdParty/log4cplus/src/appender.cxx:156:31: note: in instantiation of function template specialization 'log4cplus::helpers::convertIntegerToString<unsigned int>' requested here
        filterName = helpers::convertIntegerToString (++filterCount)))
                              ^
7 errors generated.

CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appenderattachableimpl.o src/appenderattachableimpl.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Workspace/MSME/ThirdParty/log4cplus
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin:/Workspace/VoiceEngine/MaaiiSipEngine3.0.0/Doubango/doubango/specialMedia/webrtc/depot_tools"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug-iphoneos\" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -miphoneos-version-min=7.1 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug/include -I/Workspace/MSME/ThirdParty/log4cplus/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources/armv7 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden -DINSIDE_LOG4CPLUS -MMD -MT dependencies -MF /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appenderattachableimpl.d --serialize-diagnostics /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appenderattachableimpl.dia -c /Workspace/MSME/ThirdParty/log4cplus/src/appenderattachableimpl.cxx -o /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appenderattachableimpl.o
clang: warning: argument unused during compilation: '-headerpad_max_install_names'
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appenderattachableimpl.cxx:22:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:114:9: error: too many arguments provided to function-like macro invocation
        "microseconds");
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appenderattachableimpl.cxx:22:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/loglevel.h:35:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/vector:264:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:489:9: note: macro 'static_assert' defined here
#define static_assert(__b, __m) \
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/appenderattachableimpl.cxx:22:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:113:5: error: use of undeclared identifier 'static_assert'
    static_assert (std::ratio_equal<Duration::period, std::micro>::value,
    ^
2 errors generated.

CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/asyncappender.o src/asyncappender.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Workspace/MSME/ThirdParty/log4cplus
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin:/Workspace/VoiceEngine/MaaiiSipEngine3.0.0/Doubango/doubango/specialMedia/webrtc/depot_tools"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug-iphoneos\" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -miphoneos-version-min=7.1 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug/include -I/Workspace/MSME/ThirdParty/log4cplus/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources/armv7 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden -DINSIDE_LOG4CPLUS -MMD -MT dependencies -MF /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/asyncappender.d --serialize-diagnostics /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/asyncappender.dia -c /Workspace/MSME/ThirdParty/log4cplus/src/asyncappender.cxx -o /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/asyncappender.o
clang: warning: argument unused during compilation: '-headerpad_max_install_names'

CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/clogger.o src/clogger.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Workspace/MSME/ThirdParty/log4cplus
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin:/Workspace/VoiceEngine/MaaiiSipEngine3.0.0/Doubango/doubango/specialMedia/webrtc/depot_tools"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug-iphoneos\" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -miphoneos-version-min=7.1 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug/include -I/Workspace/MSME/ThirdParty/l** BUILD FAILED **


The following build commands failed:
    CompileC iOS/build_armv7/src/logog4cplus/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources/armv7 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden -DINSIDE_LOG4CPLUS -MMD -MT dependencies -MF /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/clogger.d --serialize-diagnostics /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/clogger.dia -c /Workspace/MSME/ThirdParty/log4cplus/src/clogger.cxx -o /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log44cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/appender.o src/appender.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    CompileC iOS/build_armv7/src/log4cplus.build/cplusS.build/Objects-normal/armv7/clogger.o
clang: warning: argument unused during compilation: '-headerpad_max_install_names'
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/clogger.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/logger.h:36:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/spi/appenderattachable.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:114:9: error: too many arguments provided to function-like macro invocation
        "microseconds");
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/clogger.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/logger.h:34:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/logleveDebug-iphoneos/log4cplusS.build/Objects-normal/armv7/appenderattachableimpl.o src/al.h:35:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/vector:264:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:489:9: note: macro 'static_assert' defined here
#define static_assert(__b, __m) \
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/clogger.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/logger.h:36:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/spi/appenderattachable.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:113:5: error: use of undeclared identifier 'static_assert'
    static_assert (std::ratio_equal<Duration::period, std::micro>::value,
    ^
2 errors generated.

CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/configurator.o src/configurator.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    cd /Workspace/MSME/ThirdParty/log4cplus
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin:/Workspace/VoiceEngine/MaaiiSipEngine3.0.0/Doubango/doubango/specialMedia/webrtc/depot_tools"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++ -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-non-virtualppenderattachableimpl.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/clogger.o src/clogger.-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-shorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DCMAKE_INTDIR=\"Debug-iphoneos\" -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -Wno-sign-conversion -miphoneos-version-min=7.1 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug/include -I/Workspace/MSME/ThirdParty/log4cplus/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/include -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources/armcxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
    CompileC iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/configurator.o src/configurator.cxx normal armv7 c++ com.apple.compilers.llvm.clang.1_0.compiler
(4 failures)
v7 -I/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/DerivedSources -Wmost -Wno-four-char-constants -Wno-unknown-pragmas -F/Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/Binaries/Debug -headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden -DINSIDE_LOG4CPLUS -MMD -MT dependencies -MF /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/configurator.d --serialize-diagnostics /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/configurator.dia -c /Workspace/MSME/ThirdParty/log4cplus/src/configurator.cxx -o /Workspace/MSME/ThirdParty/log4cplus/iOS/build_armv7/src/log4cplus.build/Debug-iphoneos/log4cplusS.build/Objects-normal/armv7/configurator.o
clang: warning: argument unused during compilation: '-headerpad_max_install_names'
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/configurator.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/configurator.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:114:9: error: too many arguments provided to function-like macro invocation
        "microseconds");
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/configurator.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/configurator.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/loglevel.h:35:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/vector:264:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__config:489:9: note: macro 'static_assert' defined here
#define static_assert(__b, __m) \
        ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/configurator.cxx:21:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/configurator.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/appender.h:33:
In file included from /Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/layout.h:36:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/timehelper.h:113:5: error: use of undeclared identifier 'static_assert'
    static_assert (std::ratio_equal<Duration::period, std::micro>::value,
    ^
In file included from /Workspace/MSME/ThirdParty/log4cplus/src/configurator.cxx:25:
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:130:20: error: unknown type name 'constexpr'
            static constexpr
                   ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:131:13: error: expected member name or ';' after declaration specifiers
            bool
            ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:149:20: error: unknown type name 'constexpr'
            static constexpr
                   ^
/Workspace/MSME/ThirdParty/log4cplus/include/log4cplus/helpers/stringhelper.h:150:13: error: expected member name or ';' after declaration specifiers
            bool
            ^
/Workspace/MSME/ThirdParty/log4cplus/src/configurator.cxx:401:9: error: expected expression
        [](tchar const ch) -> bool { return ch == LOG4CPLUS_TEXT(' '); });
        ^
7 errors generated.

how build a server for appender

how build a server for appender, like SocketAppender has a test cxx, (tests/socket_test/main.cxx )

Log4jUdpAppender can?
AsyncAppender can ?
SysLogAppender can?

log4cplus provides ?

iOS only single-threaded?

Hello

log4cplus version 1.2

I have an issue. I've built log4cplus with multi-threaded version for iOS for armv7, arvm7s, arm64. When I tried to publish application that uses log4cplus in apple store they sent me back an error:

Dear developer,
We have discovered one or more issues with your recent delivery for "ProjectX". To process your delivery, the following issues must be corrected:
Non-public API usage:
• The app references non-public symbols in PROJECTX: __tlv_bootstrap
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.

Then I investigated what is __tlv_bootstrap and found that only in arm64 version of liblog4cplus.a there is a usage of this symbol( a dependency to this symbol). As I understand it is due to Thread Local Storage usage? Also I found in log4cplus/iOS/scripts/cmake_ios_armv7.sh the flag -DLOG4CPLUS_SINGLE_THREADED="TRUE" does it mean that for iOS we can use only single threaded log4cplus?

Segmention fault at shutdown with CreateDirs property

Hi!

I am trying to use the CreateDirs property but I receive a segmention fault at shutdown and I couldn't find out what causes the problem.
Version: 1.2.0-RC3, 1.2.0
Stacktrace
Configuration file

I have initialized log4cplus with the following calls:
log4cplus::initialize();
log4cplus::PropertyConfigurator config("conf_log.conf");
config.configure();

Thanks for your help.

Missing virtual destructors

These are minor issues, but got flagged by the static analyzer in Eclipse.

  • Class FactoryTempl has virtual method createObject, but non-virtual destructor in spi/factory.h
  • Class LocalFactoryBase has virtual method createObject, but non-virtual destructor in spi/factory.h
  • no break at end of case in property.cxx line 147
  • no break at end of case in property.cxx line 150

Application using log4cplus hangs on exit

With relatively latest log4cplus version (commit from 04122015) I have encountered unexpected hang in my application upon exit. After two days of digging, I have found that ThreadPool destructor is called twice:

Breakpoint 6, ~ThreadPool (this=0x6816d0, __in_chrg=<optimized out>)
    at threadpool/ThreadPool.h:178
178            std::unique_lock<std::mutex> lock(queue_mutex);
(gdb) bt
#0  ~ThreadPool (this=0x6816d0, __in_chrg=<optimized out>)
    at threadpool/ThreadPool.h:178
#1  operator() (this=<optimized out>, __ptr=0x6816d0)
    at /usr/include/c++/5/bits/unique_ptr.h:76
#2  ~unique_ptr (this=0x6815a8, __in_chrg=<optimized out>)
    at /usr/include/c++/5/bits/unique_ptr.h:236
#3  ~DefaultContext (this=0x6812b0, __in_chrg=<optimized out>)
    at src/global-init.cxx:127
#4  log4cplus::(anonymous namespace)::destroy_default_context::~destroy_default_context (
    this=0x7ffff71562d6 <log4cplus::(anonymous namespace)::destroy_default_context_>, __in_chrg=<optimized out>) at src/global-init.cxx:162
#5  0x00007ffff512a21f in __cxa_finalize (d=0x7ffff7151710)
    at cxa_finalize.c:55
#6  0x00007ffff6f05873 in __do_global_dtors_aux ()
   from /usr/lib64/liblog4cplus-2.0.so.3
#7  0x00007fffffffe010 in ?? ()
#8  0x00007ffff7dea31f in _dl_fini () at dl-fini.c:253
(gdb) c
Continuing.
[Thread 0x7fffeeb44700 (LWP 6151) exited]
[Thread 0x7fffef345700 (LWP 6150) exited]

As you can see, all worker threads have gone. And the second one:

Program received signal SIGINT, Interrupt.
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135    2:    movl    %edx, %eax
(gdb) bt
#0  __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007ffff5a40640 in pthread_cond_broadcast@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S:136
#2  0x00007ffff576abb9 in __gthread_cond_broadcast (__cond=<optimized out>)
    at /usr/src/debug/gcc-5.1.1-20150612/obj-x86_64-alt-linux/x86_64-alt-linux/libstdc++-v3/include/x86_64-alt-linux/bits/gthr-default.h:852
#3  std::condition_variable::notify_all (this=<optimized out>)
    at ../../../../../libstdc++-v3/src/c++11/condition_variable.cc:73
#4  0x00007ffff6f1c8f3 in ~ThreadPool (this=0x6826d0, 
    __in_chrg=<optimized out>) at threadpool/ThreadPool.h:180
#5  operator() (this=<optimized out>, __ptr=0x6826d0)
    at /usr/include/c++/5/bits/unique_ptr.h:76
#6  reset (__p=0x6826d0, this=<optimized out>)
    at /usr/include/c++/5/bits/unique_ptr.h:344
#7  log4cplus::shutdownThreadPool () at src/global-init.cxx:282
#8  0x00007ffff6f2116b in log4cplus::Hierarchy::shutdown (
    this=this@entry=0x682358) at src/hierarchy.cxx:244
#9  0x00007ffff6f21357 in log4cplus::Hierarchy::~Hierarchy (this=0x682358, 
    __in_chrg=<optimized out>) at src/hierarchy.cxx:81
#10 0x00007ffff6f1cfa5 in ~DefaultContext (this=0x6822b0, 
    __in_chrg=<optimized out>) at src/global-init.cxx:127
#11 log4cplus::(anonymous namespace)::destroy_default_context::~destroy_default_---Type <return> to continue, or q <return> to quit--- 
context (this=<optimized out>, __in_chrg=<optimized out>)
    at src/global-init.cxx:162
#12 0x00007ffff512a21f in __cxa_finalize (d=0x7ffff7151710)
    at cxa_finalize.c:55
#13 0x00007ffff6f05873 in __do_global_dtors_aux ()
   from /usr/lib64/liblog4cplus-2.0.so.3
#14 0x00007fffffffdff0 in ?? ()
#15 0x00007ffff7dea31f in _dl_fini () at dl-fini.c:253

As you can see log4cplus::Hierarchy::shutdown tries to destruct already destructed ThreadPool instance. It happens because of fields order in struct DefaultContext (from global-init.cxx):

struct DefaultContext
{
    log4cplus::thread::Mutex console_mutex;
    helpers::LogLog loglog;
    LogLevelManager log_level_manager;
    helpers::Time TTCCLayout_time_base;
    NDC ndc;
    MDC mdc;
    Hierarchy hierarchy;
    spi::AppenderFactoryRegistry appender_factory_registry;
    spi::LayoutFactoryRegistry layout_factory_registry;
    spi::FilterFactoryRegistry filter_factory_registry;
    spi::LocaleFactoryRegistry locale_factory_registry;
#if ! defined (LOG4CPLUS_SINGLE_THREADED)
    std::unique_ptr<progschj::ThreadPool> thread_pool {new progschj::ThreadPool};
#endif
};

thread_pool member is destructed before hierarchy member. As result, we are in trouble. Several solutions possible:

  1. change member order
  2. remove explicit ThreadPool shutdown from Hierarchy

Option to disable CPack

It is useful to have an option to disable CPack (like LOG4CPLUS_BUILD_TESTING). Complex cmake builds with log4cplus as an external project cannot be well packaged with dependencies that deal with CPack.

Crash on exit

Hey, I am trying to get started with log4cplus. I'm using a simple CMake configuration where I'm creating an executable and adding log4cplus.I simply cloned the log4cplus and pulled the submodules. I build log4cplus as a shared library and with /MTd on Win7 x64 with Visual Studio 2013.

Here is my code

#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/configurator.h>
#include <iomanip>

int main()
{
    log4cplus::initialize();
    log4cplus::BasicConfigurator config;
    config.configure();


    log4cplus::Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("main"));
    LOG4CPLUS_INFO(logger, "This is a INFO message");


    return 0;
}

the executable crashes in Hierarchy::shutdown() in the line at waitUntilEmptyThreadPoolQueue()

Here is the call stack

>   log4cplusD.dll!mtx_do_lock(_Mtx_internal_imp_t * * mtx, const xtime * target) Line 49   C++
    log4cplusD.dll!_Mtx_lock(_Mtx_internal_imp_t * * mtx) Line 154  C++
    log4cplusD.dll!std::_Mtx_lockX(_Mtx_internal_imp_t * * _Mtx) Line 68    C++
    log4cplusD.dll!std::_Mutex_base::lock() Line 42 C++
    log4cplusD.dll!std::unique_lock<std::mutex>::unique_lock<std::mutex>(std::mutex & _Mtx) Line 220    C++
    log4cplusD.dll!progschj::ThreadPool::wait_until_empty() Line 192    C++
    log4cplusD.dll!log4cplus::waitUntilEmptyThreadPoolQueue() Line 298  C++
    log4cplusD.dll!log4cplus::Hierarchy::shutdown() Line 244    C++
    log4cplusD.dll!log4cplus::Hierarchy::~Hierarchy() Line 81   C++
    [External Code] 
    log4cplusD.dll!log4cplus::`anonymous namespace'::destroy_default_context::~destroy_default_context() Line 166   C++
    [External Code] 

This issue might be really similar to #102

new clone fails to install after building

Hi,
I just did a fresh clone and build. Then during the install got this:
CMake Error at src/cmake_install.cmake:147 (FILE):
file INSTALL cannot find
"/home/roger/NetBeansProjects/log4cplus-dev/src/../include/log4cplus/thread/impl/syncprims-pthreads.h".
Call Stack (most recent call first):
cmake_install.cmake:37 (INCLUDE)
.....

The build script looks like

export LDFLAGS="-fPIC -pie "
export CFLAGS="-fPIC -fPIE -std=c++11"
export CXXFLAGS="-fPIC -fPIE -std=c++11"
export CPPFLAGS=-fPIC

make clean

mkdir build
cd build
ccmake -DCMAKE_INSTALL_PREFIX=pwd/../dist ..
make
make check
make html
make install

Cannot compile for i386 under debian 64bit

I have the nasty issue that I need to build both x64 and x32 versions of the latest release I downloaded from SourceForge. 64bit version works perfectly, but the 32bit build just isn't 32bit. What I did to compile was:

export CXXFLAGS="-std=c++0x -m32"

Although size of the output files was slightly different, they were still 64bit. Is it possible to achieve my goal?

missing -fPIC on 1.2.x branch for Autotools

as result when building shared lib libfoo.so, that includes liblog4cplus.a results in error:

log4cplus/lib/liblog4cplus.a(liblog4cplus_la-consoleappender.o): relocation R_X86_64_32 against `_ZTTN9log4cplus15ConsoleAppenderE' can not be used when making a shared object; recompile with -fPIC
/vagrant/target/native/debug/log4cplus/lib/liblog4cplus.a: error adding symbols: Bad value

log4cplus-master In these places on the Win32 platform needs to be modified. msvc.diff

 include/log4cplus/config/win32.h         |  2 +-
 include/log4cplus/configurator.h         |  4 ++--
 msvc12/log4cplus.vcxproj                 | 35 ++++++++------------------------
 msvc12/log4cplus.vcxproj.filters         |  6 ------
 msvc12/log4cplusS.vcxproj                | 35 ++++++++------------------------
 msvc12/log4cplusS.vcxproj.filters        |  6 ------
 msvc12/tests/configandwatch_test.vcxproj | 16 +++++++--------
 msvc12/tests/filter_test.vcxproj         | 16 +++++++--------
 msvc12/tests/performance_test.vcxproj    | 16 +++++++--------
 msvc12/tests/propertyconfig_test.vcxproj | 16 +++++++--------
 src/socket.cxx                           |  7 ++++++-
 11 files changed, 57 insertions(+), 102 deletions(-)

diff --git a/include/log4cplus/config/win32.h b/include/log4cplus/config/win32.h
index fe70d30..cfcfd7d 100644
--- a/include/log4cplus/config/win32.h
+++ b/include/log4cplus/config/win32.h
@@ -170,7 +170,7 @@
 // completely forever.
 //
 //#    define LOG4CPLUS_INLINES_ARE_EXPORTED
-#  endif
+//#  endif
 #  define LOG4CPLUS_HAVE_FUNCTION_MACRO
 #  if defined (__MINGW32__)
 #    define LOG4CPLUS_WORKING_C_LOCALE
diff --git a/include/log4cplus/configurator.h b/include/log4cplus/configurator.h
index e5f3fa5..0443cdd 100644
--- a/include/log4cplus/configurator.h
+++ b/include/log4cplus/configurator.h
@@ -208,7 +208,7 @@ namespace log4cplus
          * log4cplus.appender.A1=log4cplus::SyslogAppender
          *
          * # The syslog daemon resides on www.abc.net
-         * log4cplus.appender.A1.SyslogHost=www.abc.net
+         * log4cplus.appender.A1.host=www.abc.net
          *
          * # A1's layout is a PatternLayout, using the conversion pattern
          * # <b>%r %-5p %c{2} %M.%L %x - %m\n</b>. Thus, the log output will
@@ -230,7 +230,7 @@ namespace log4cplus
          * log4cplus.appender.A2.MaxFileSize=10MB
          * log4cplus.appender.A2.MaxBackupIndex=1
          * log4cplus.appender.A2.layout=log4cplus::TTCCLayout
-         * log4cplus.appender.A2.layout.ContextPrinting=enabled
+         * 
          * log4cplus.appender.A2.layout.DateFormat=ISO8601
          *
          * # Root logger set to DEBUG using the A2 appender defined above.
diff --git a/msvc12/log4cplus.vcxproj b/msvc12/log4cplus.vcxproj
index 587c5dd..e88fda9 100644
--- a/msvc12/log4cplus.vcxproj
+++ b/msvc12/log4cplus.vcxproj
@@ -44,52 +44,52 @@
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -824,24 +824,6 @@
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <ClCompile Include="..\src\logloguser.cxx">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
     <ClCompile Include="..\src\pointer.cxx">
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -1052,7 +1034,6 @@
     <ClInclude Include="..\include\log4cplus\thread\impl\tls.h" />
     <ClInclude Include="..\include\log4cplus\helpers\appenderattachableimpl.h" />
     <ClInclude Include="..\include\log4cplus\helpers\loglog.h" />
-    <ClInclude Include="..\include\log4cplus\helpers\logloguser.h" />
     <ClInclude Include="..\include\log4cplus\helpers\pointer.h" />
     <ClInclude Include="..\include\log4cplus\helpers\property.h" />
     <ClInclude Include="..\include\log4cplus\helpers\queue.h" />
diff --git a/msvc12/log4cplus.vcxproj.filters b/msvc12/log4cplus.vcxproj.filters
index 15efbb9..6353ca7 100644
--- a/msvc12/log4cplus.vcxproj.filters
+++ b/msvc12/log4cplus.vcxproj.filters
@@ -130,9 +130,6 @@
     <ClCompile Include="..\src\loglog.cxx">
       <Filter>helpers</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\logloguser.cxx">
-      <Filter>helpers</Filter>
-    </ClCompile>
     <ClCompile Include="..\src\pointer.cxx">
       <Filter>helpers</Filter>
     </ClCompile>
@@ -339,9 +336,6 @@
     <ClInclude Include="..\include\log4cplus\helpers\loglog.h">
       <Filter>helpers</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\log4cplus\helpers\logloguser.h">
-      <Filter>helpers</Filter>
-    </ClInclude>
     <ClInclude Include="..\include\log4cplus\helpers\pointer.h">
       <Filter>helpers</Filter>
     </ClInclude>
diff --git a/msvc12/log4cplusS.vcxproj b/msvc12/log4cplusS.vcxproj
index 7d9d4f1..16eb7ac 100644
--- a/msvc12/log4cplusS.vcxproj
+++ b/msvc12/log4cplusS.vcxproj
@@ -43,49 +43,49 @@
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>StaticLibrary</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
@@ -650,24 +650,6 @@
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ClCompile>
-    <ClCompile Include="..\src\logloguser.cxx">
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
     <ClCompile Include="..\src\pointer.cxx">
       <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -971,7 +953,6 @@
     <ClInclude Include="..\include\log4cplus\config\windowsh-inc.h" />
     <ClInclude Include="..\include\log4cplus\helpers\appenderattachableimpl.h" />
     <ClInclude Include="..\include\log4cplus\helpers\loglog.h" />
-    <ClInclude Include="..\include\log4cplus\helpers\logloguser.h" />
     <ClInclude Include="..\include\log4cplus\helpers\pointer.h" />
     <ClInclude Include="..\include\log4cplus\helpers\queue.h" />
     <ClInclude Include="..\include\log4cplus\helpers\snprintf.h" />
diff --git a/msvc12/log4cplusS.vcxproj.filters b/msvc12/log4cplusS.vcxproj.filters
index 6148ed1..d3d268a 100644
--- a/msvc12/log4cplusS.vcxproj.filters
+++ b/msvc12/log4cplusS.vcxproj.filters
@@ -106,9 +106,6 @@
     <ClCompile Include="..\src\loglog.cxx">
       <Filter>helpers</Filter>
     </ClCompile>
-    <ClCompile Include="..\src\logloguser.cxx">
-      <Filter>helpers</Filter>
-    </ClCompile>
     <ClCompile Include="..\src\pointer.cxx">
       <Filter>helpers</Filter>
     </ClCompile>
@@ -291,9 +288,6 @@
     <ClInclude Include="..\include\log4cplus\helpers\loglog.h">
       <Filter>helpers</Filter>
     </ClInclude>
-    <ClInclude Include="..\include\log4cplus\helpers\logloguser.h">
-      <Filter>helpers</Filter>
-    </ClInclude>
     <ClInclude Include="..\include\log4cplus\helpers\pointer.h">
       <Filter>helpers</Filter>
     </ClInclude>
diff --git a/msvc12/tests/configandwatch_test.vcxproj b/msvc12/tests/configandwatch_test.vcxproj
index b8ae386..79c79ac 100644
--- a/msvc12/tests/configandwatch_test.vcxproj
+++ b/msvc12/tests/configandwatch_test.vcxproj
@@ -43,50 +43,50 @@
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
diff --git a/msvc12/tests/filter_test.vcxproj b/msvc12/tests/filter_test.vcxproj
index 71d1423..6d53d2d 100644
--- a/msvc12/tests/filter_test.vcxproj
+++ b/msvc12/tests/filter_test.vcxproj
@@ -44,50 +44,50 @@
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
diff --git a/msvc12/tests/performance_test.vcxproj b/msvc12/tests/performance_test.vcxproj
index 1fea8ce..8dbf7e1 100644
--- a/msvc12/tests/performance_test.vcxproj
+++ b/msvc12/tests/performance_test.vcxproj
@@ -43,50 +43,50 @@
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
diff --git a/msvc12/tests/propertyconfig_test.vcxproj b/msvc12/tests/propertyconfig_test.vcxproj
index 57b4b45..f49ac7d 100755
--- a/msvc12/tests/propertyconfig_test.vcxproj
+++ b/msvc12/tests/propertyconfig_test.vcxproj
@@ -43,50 +43,50 @@
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_Unicode|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
     <ConfigurationType>Application</ConfigurationType>
     <UseOfMfc>false</UseOfMfc>
     <CharacterSet>MultiByte</CharacterSet>
-    <PlatformToolset>v120</PlatformToolset>
+    <PlatformToolset>CTP_Nov2013</PlatformToolset>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
   <ImportGroup Label="ExtensionSettings">
diff --git a/src/socket.cxx b/src/socket.cxx
index a47e385..bbebfcb 100644
--- a/src/socket.cxx
+++ b/src/socket.cxx
@@ -216,7 +216,12 @@ Socket::write(const std::string & buffer)

 ServerSocket::ServerSocket (ServerSocket && other)
     : AbstractSocket (std::move (other))
-    , interruptHandles { -1, -1 }
+    ,
+#ifdef _MSC_VER
+    interruptHandles{ { -1, -1 } }
+#else
+    interruptHandles{ -1, -1 }
+#endif
 {
     interruptHandles.swap (other.interruptHandles);
 }

Uninitialized condition in TTCCLayout

This may be in other layouts as well. However if you initialize a TTCCLayout using the constructor that takes a properties object and the properties object does not have keys for all values, then accessing one of the instance variables gives an uninitialized condition error from valgrind.

I believe the solution for this is to provide a default value to properties.getBool (and other accessors as well) to ensure that the property gets a value even when the key doesn't exist. That or to initialize the variables to defaults in the initializer list of the constructor before the properties accessors are called.

log4cplus-master and log4cplus-1.2.x property "SECURITY","SECURITY.access","class.of.the.day" not implemented

in ..\include\log4cplus\configurator.h (both log4cplus-master and log4cplus-1.2.x)

# Logger definitions:  
# The SECURITY logger inherits is LogLevel from root. However, it's output  
# will go to A1 appender defined above. It's additivity is non-cumulative.  
log4cplus.logger.SECURITY=INHERIT, A1  
log4cplus.additivity.SECURITY=false  

# Only warnings or above will be logged for the logger "SECURITY.access".  
# Output will go to A1.  
log4cplus.logger.SECURITY.access=WARN  


# The logger "class.of.the.day" inherits its LogLevel from the  
# logger hierarchy.  Output will go to the appender's of the root  
# logger, A2 in this case.  
log4cplus.logger.class.of.the.day=INHERIT  

socketappender reconnect

How do i configure the socketappender reconnection. I find that if the socketappender lost connection from the loggingserver, some of log message will lost.

Variadic macros fail when no variadic arguments are supplied

When using gcc, the LOG4CPLUS_[TYPE]_FMT() macros fail if no variadic arguments are supplied. I think if you add a ## prefix to __VA_ARGS__, then gcc will omit the prior comma if no arguments are supplied and no longer fail in those situations.

Here one example where the issue exists:

#define LOG4CPLUS_INFO_FMT(logger, logFmt, ...)                             \
    LOG4CPLUS_MACRO_FMT_BODY (logger, INFO_LOG_LEVEL, logFmt, __VA_ARGS__)

This could change to:

#define LOG4CPLUS_INFO_FMT(logger, logFmt, ...)                             \
    LOG4CPLUS_MACRO_FMT_BODY (logger, INFO_LOG_LEVEL, logFmt, ##__VA_ARGS__)

Appender.CreateDir doesn't work when Appender.UseLockFile=true

While using Lock files I get this error when the directory "logs" doesn't exist "log4cplus:ERROR could not open or create file /logs/some_name.log.lock"

Both CreateDirs and UseLockFile work correctly independently, but together the directory is not created prior to attempting to write to the lock file.

Example properties file:

log4cplus.appender.Name=log4cplus::RollingFileAppender
log4cplus.appender.Name.CreateDirs=true
log4cplus.appender.Name.File=./logs/some_name.log
log4cplus.appender.Name.UseLockFile=true
log4cplus.appender.Name.MaxFileSize=100MB
log4cplus.appender.Name.MaxBackupIndex=10

Building a multi-threaded server using QThreads - blocking read does not return

Hello,

I want to build a multi-threaded application which uses log4cplus::helpers::Sockets and a log4cplus::helpers::ServerSocket respectively. Because I need to display the log statements in an existing GUI, which was built with Qt, I'm using QThreads to manage the acceptor thread on the server and to dispatch threads that read from the client. I am encountering an issue that the blocking call to log4cplus::helpers::Socket::read does not return immediately when I call the close function on the respective socket - it only returns and breaks when the next log statement has arrived. It is very well possible that this problem is introduced by the way I handle my QThreads, so I'm going to post in more detail in the following what I'm doing exactly. If you have any suggestions / recommondations for a better implementation of this use case, they are very welcome! I am using version 1.1.3 rc 4.

Generally I have the following setup: A dispatcher thread (which is a QThread as mentioned before) continuously listens for incoming connections. It's run method looks like this:

mStopRequested = false;

// create the server socket
// mServerSocket is wrapped in a smart pointer
mServerSocket.reset(new log4cplus::helpers::ServerSocket(PORT));

if (!mServerSocket->isOpen()
  {
   std::cout << "ERROR: Could not open server socket" << std::endl;
   return;
}

while (!mStopRequested)
{
  // wait for incoming connection
  log4cplus::helpers::Socket _socket = mServerSocket->accept();

  if (!mStopRequested)
  {
    dispatch(_socket);
  }
}

The dispatch function creates a new worker thread (which is again a QThread). I only expect very few client connections, so I chose not to use a thread pool. The client socket returned from accept is passed to this worker in the constructor. The run method of a worker looks like the following (mSocket is the client socket passed via the constructor):

 std::cout << "start worker" << std::endl;
  mStopRequested = false;

  while (!mStopRequested)
  {
    if (!mSocket.isOpen())
    {
      std::cout << "ERROR: socket not open - abort") << std::endl;
      mStopRequested = true;
      continue;
    }

    // read size of the message
    log4cplus::helpers::SocketBuffer _msgSizeBuffer(sizeof(unsigned int));

    if (!mSocket.read(_msgSizeBuffer)) // here is the problem
    {
      if (errno == 10054)
      {
        std::cout << "Connection reset on client side - abort" << std::endl;
      }
      else
      {
        std::cout<< "ERROR: error reading size of message from buffer - abort" << std::endl;
      }
      mStopRequested = true;
      continue;
    }

    unsigned int _msgSize = _msgSizeBuffer.readInt();

    // read the message
    log4cplus::helpers::SocketBuffer _buffer(_msgSize);
    if (!mSocket.read(_buffer))
    {
      std::cout << "ERROR: error reading message from buffer - abort" << std::endl;
      mStopRequested = true;
      break;
    }

    log4cplus::spi::InternalLoggingEvent _event = log4cplus::helpers::readFromBuffer(_buffer);

    // do something with the message
    // ...
  }

The problem is that mSocket.read(_msgSizeBuffer) does not break immediately when I call mSocket.close() from the outside. It only breaks when another message arrives. Is this expected behaviour? Or am I messing things up because I access the socket from multiple threads? Would you recommend to use log4cplus::thread::AbstractThread rather than QThreads? I realize that this question might be very localized. So feel free to just point me towards some examples that I might not have found yet or highlight some design issues that I'm not aware of. In any case, thanks a lot for your help!

Question regarding configuration of FileAppender and Appender in general

Hi,

While using log4cplus, I came across the following two questions that might rather be of conceptual nature:

  • Is it intended that a file is only written to by exactly one FileAppender? Technically, it is possible that I specify the same filename in two different FileAppenders. In the append method of a FileAppender the output stream is only flushed if UseLockFile or ImmediateFlush is true and also formatAndAppend does not perform a flush by default. So, I guess that using the same file from two different FileAppenders is undefined behavior (if immediateFlush is not set). Could you may be comment on that?
  • I've noticed that for logging events that are propagated to ancestors, the logging level is ignored. E.g. if I set the root logger to level INFO and attach a console appender to it and issue a DEBUG event to a logger some.logger whose level is set to DEBUG, the root logger will still print this event to the console. I've read several posts on Stackoverflow that confirm this, but only for log4j, for which this is actually the expected behavior. I currently work around this by setting the threshold level of the respective appender to some value (e.g. in the above example I would set the threshold level of the console appender attached to root to INFO). However, this is easily forgotten. I just wanted to know if you could comment on that as well and may be have a recommondation how this should/could be treated other than with the threshold level?

Thanks a lot in advance!

hourly log delayed

After my service running for a month, I found the hourly output log was delayed;
My setting:

log4cplus.appender.UI=log4cplus::DailyRollingFileAppender
log4cplus.appender.UI.Schedule=HOURLY

and the hourly logs are generated at 26 minites of every hour
eg. with commend [ls -l] I get this:

-rw-r--r-- 1 resys resys  698763 6月  25 09:26 client_running.log.2015-06-25-08

client_running.log.2015-06-25-08 was generated at 09:26

Fail to build using mingw 4.9.1

Apparently mingw 4.9.1 doesn't have InterlockedExchangeAdd. Here's a patch to fix the socket code to compile on mingw 4.9.1.

--- src/socket-win32.cxx.orig   2016-01-15 16:18:55 -0600
+++ src/socket-win32.cxx        2016-01-15 17:32:08 -0600
@@ -89,7 +89,8 @@
         // Wait for state change.
         while (true)
         {
-            LONG state = InterlockedAdd (&winsock_state, 0);
+            //LONG state = InterlockedAdd (&winsock_state, 0);
+            LONG state = InterlockedExchangeAdd (&winsock_state, 0);
             switch (state)
             {
             case WS_INITIALIZED:

Release 1.2.0 // unable to compile with MSVS 2015 / CMake

MSVS 2015 compilation error

C:\WORK\GitHub\log4cplus\include\log4cplus/internal/socket.h(88): error C3861: FreeAddrInfoW: identifier not found

The problem is related to https://github.com/log4cplus/log4cplus/blob/REL_1_2_0/CMakeLists.txt#L73

set(_WIN32_WINNT 0x0500 CACHE STRING "Define Windows API version to use.")

Must be at least 0x0502, because this function available in Windows XP SP 2.

Or greater (Vista - 0x0600) as on master branch

configuring log4cplus failed

Version: 1.2.0-RC4
Environment: Visual Studio 2015, debug and release, x64

static intmax_t initialize()
{
    ::log4cplus::tistringstream const log4cplusProperties
    (
        ::log4cplus::tstring
        (
            LOG4CPLUS_TEXT
            (
                "log4cplus.rootLogger=TRACE, stdout\n"
                "log4cplus.appender.stdout=log4cplus::ConsoleAppender\n"
                "log4cplus.appender.stdout.Threshold=TRACE\n"
                "log4cplus.appender.stdout.Target=System.out\n"
                "log4cplus.appender.stdout.layout=log4cplus::PatternLayout\n"
                "log4cplus.appender.stdout.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S,%q} %p %t %c %L: %m%n\n"
            )
        )
    );

    ::log4cplus::initialize();

    ::log4cplus::PropertyConfigurator
    propertyConfigurator
    (
        * const_cast<::log4cplus::tistringstream *>(& log4cplusProperties)
    );

    // Failed here. Process will be terminated.
    propertyConfigurator.configure();

    return 0;
}

static intmax_t dummy = initialize();

int main(void)
{
    log4cplus::Logger LOGGER = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("int main(void)"));

    LOG4CPLUS_INFO(LOGGER, "who's your daddy?");

    return 0;
}

Stable release versioning question

Hello.

I would like to ask what are the plans WRT the versions of log4cplus that are being released? The latest really stable version released seems to be 1.1.2, which is quite old. Since then, there have been only RC versions (of 1.1.3 and 1.2.0).

In Fedora, we use the the https://release-monitoring.org service to get notified when new version of the project is released. The service however detects only stable version of the project, because this is usually what we want to include in the distribution. So this means the latest stable version detected is 1.1.2 (https://release-monitoring.org/project/1835/) which is from 2013.

So my question is, if the project considers the RC releases as final and stable? Are you at all planning to release final version (not RC) of the newer versions (1.1.3, 1.2.0) of log4cplus?

PS: I'm not sure which place is considered as official, where the project lives. Is if GitHub or sourceforge?
(The discussion on the release-monitoring project page if you are interested: fedora-infra/anitya#251)

Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.