On Jan 18, 2008, at 8:12 AM, Christoph Macheiner wrote:
also, LogLog::emit() does not append an end-of-line anymore since
the last change (to SystemErrWriter). is this intended?
thanks, christoph
-----Original Message-----
From: Christoph Macheiner [mailto:[EMAIL PROTECTED]
Sent: Freitag, 18. Jänner 2008 14:46
To: Log4CXX User
Subject: LogLog char/unicode mismatch on windows
in log4cxx_private.hw revision 606089, the "#define
LOG4CXX_FORCE_WIDE_CONSOLE 1" was removed. now, if this is not
defined,
SystemErrWriter::write() uses fwide() to determine whether to write
wchar or char and fortunately, fwide() happens to be unimplemented
in the msvc libraries. i think in this case,
LOG4CXX_FORCE_WIDE_CONSOLE should be 1 on a UNICODE build, and 0
otherwise? (or maybe there is another way to better handle this).
for now, i just defined it again in log4cxx_private.h.
(yes, latest svn head and log4cxx(_private).h rebuilt from *.hw)
thanks, christoph
Sorry about that. I think that I had intended to remove the no longer
used LOG4CXX_HAS_WLOCALE macro and inadvertently removed the
LOG4CXX_FORCE_WIDE_CONSOLE macro instead. I've cleaned up and aligned
the log4cxx_private.h.in and log4cxx_private.hw files, so hopefully
don't get them out of sync again.
For some background on the issue see
https://issues.apache.org/jira/browse/LOGCXX-126
https://issues.apache.org/jira/browse/LOGCXX-224
Basically, VC allows you to intermix wide and byte calls to the
console. Other platforms don't allow intermixing, so log4cxx uses
fwide() to follow whatever the calling app has decided to use for
console output. In LOGCXX-224, it seems fwide() isn't reliable on
some Linux's and reports that the console is wide when it is
undetermined.