- How do I add a custom level to Apache log4cxx?
This is a common topic for all the Apache logging frameworks and
typically motivated to try to categorize events by functionality or
audience. An common request is to add an AUDIT level so that the
user can configure AUDIT level messages to go to a specific appender.
However, the logger name was designed explicitly to support
routing of messages by topic or audience. The common
pattern of using classnames for logger names obscures the more
general capability of logger name to represent the topic or audience
of the logging request. The easiest approach to solve the underlying issue
is to use a logger names like "AUDIT.com.example.MyPackage.MyClass"
that allow all AUDIT messages to be routed to a particular appender.
If you attempted to use a level for that then you would lose
the ability to distinguish between different significances within
the audit messages.
- My application on Windows crashes on shutdown?
Apache log4cxx API calls use C++ Standard Template Library string
parameters. If the caller is using a different instance or type of the
C Runtime Library that log4cxx, then it is very likely that some memory
that was originally allocated by log4cxx would be freed by the caller.
If log4cxx and the caller are using different C RTL's, the program
will likely crash at the point. Use "Multithread DLL" with release
builds of log4cxx and "Multithread DLL Debug" with debug builds.
- Does Apache log4cxx support Unicode?
Yes. Apache log4cxx exposes API methods in multiple string flavors
const char*, std::string, wchar_t*, std::wstring, CFStringRef et al.
const char* and std::string are interpreted according to the
current locale settings. Applications should call setlocale(LC_ALL, "")
on startup or the C RTL will assume US-ASCII.
Before being processed internally, all these are converted to the
LogString type which is one of several supported Unicode representations
selected by the --with-logchar option. When using methods that take LogString arguments,
the LOG4CXX_STR() macro can be used to convert ASCII literals to
the current LogString type. FileAppenders support an encoding
property which should be explicitly specified to "UTF-8" or "UTF-16"
for XML files.