Hello list:
I am trying to use log4cxx to send logging events to Chainsaw V2 via the
XMLSocketAppender channel. Building the 0.9.8 source results in socket
connections being made, but not in log event data being sent.
I have located the source of this problem: the following 2 lines are commented
out in XMLSocketAppender::renderEvent:
//USES_CONVERSION;
//os->write((void *)T2A(output.c_str()), output.length());
This results in data not being sent to the socket.
Looking through the rest of the project, I can see that anywhere the T2A macro
is used, that portion of code is commented out. I'm have not been able to
locate the T2A definition, and so can not guess why its usage is being avoided.
If the following code is placed in XMLSocketAppender::renderEvent, the log
events will be transmitted (and received) successfully by Chainsaw V2:
char * sz = (char *) malloc(output.length() + 1);
sprintf(sz, "%S", output.c_str());
os->write((void *)sz, output.length());
free(sz);
I'm fairly certain there is a good reason why T2A usage is being avoided, I
just don't know why. In the absence of that knowledge all I can claim is that
the above code makes the XMLSocketAppender functional with respect to log
events being received by Chainsaw V2; I can not make any claim about this
code's correctness with respect to other aspects of the log4cxx architecture.
The ability to send log events remotely via the XMLSocketAppender is very
valueable, and I hope this functionality can be enabled properly on the
projects trunk and subsequent releases.
Thank you,
Albert Kennis
Software Engineer
POS & Kiosk Printer Products
Star Micronics
Tel: +81-543-47-0111
Fax: +81-543-48-9560