On the server side you must use XML based receiver as well.
Non java applications (c,c++,.net,etc..) must send logging events in XML serialized form and get reconstructed on the server into Java objects from this XML.

--
Kind regards,
Dmitry
www.moonlit-software.com

Moley Harey wrote:
Hi, thanks for your answers...

I changed the appender in my log4cxx properties file to be a
XMLSocketAppender and now I get the following exception when trying to
connect to my SocketServer:

2009-03-26 09:35:08,528 INFO  NRTSocketServer - NRTSocketServer :: Connected
to client at /127.0.0.1
2009-03-26 09:35:08,528 INFO  NRTSocketServer - NRTSocketServer :: Starting
new socket node.
2009-03-26 09:35:08,534 ERROR org.apache.log4j.net.SocketNode - Could not
open ObjectInputStream to Socket[addr=/127.0.0.1,port=37049,localport=4445]
java.io.StreamCorruptedException: invalid stream header
        at
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
        at org.apache.log4j.net.SocketNode.<init>(SocketNode.java:55)
        at NRTSocketServer.main(NRTSocketServer.java:46)

My SocketServer is based on the log4j Java class SimpleSocketServer, is this
class able to receive XML messages sent by log4cxx using XMLSocketAppender?
Or do I have to implement a different Java SocketServer that understand
these messages?

2009/3/25 Dmitry <[email protected]>

You must use XMLSocketAppender to send log from any non-Java client to Java
server.
Put something like this into your C++ properties file :
log4j.appender.A1=org.apache.log4j.net.XMLSocketAppender
log4j.appender.A1.RemoteHost=localhost
log4j.appender.A1.Port=12345
It should work..

Kind regards,
Dmitry
http://www.moonlit-software.com


Moley Harey wrote:

Hi folks,

I have implemented a Java SimpleSocketServer application that is running
with log4j version 1.2, I have done a test Java class that initialize the
logging and sends a couple of messages to the SimpleSocketServer and works
fine, all messages sent by the test class are succesfully written in the
same log file.

Then I have done the same with a C++ log4cxx application, updating the
log4cxx.properties file to be like this:

log4j.rootCategory=DEBUG,stdout,A1

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

# A1 is set to be a SocketAppender sending its output to the server
running
on the remote host, port 4445
log4j.appender.A1=org.apache.log4j.net.SocketAppender
log4j.appender.A1.Port=4445
log4j.appender.A1.RemoteHost=127.0.0.1

I have run my C++ application and what I get in my log file are just the
following messages:

2009-03-25 17:14:33,914 INFO  NRTSocketServer - NRTSocketServer ::
Connected
to client at /127.0.0.1
2009-03-25 17:14:33,969 INFO  NRTSocketServer - NRTSocketServer ::
Starting
new socket node.

And after this no debug or info message is logged, just when my C++
application has finished I get the following message:

2009-03-25 17:16:25,290 ERROR org.apache.log4j.net.SocketNode - Could not
open ObjectInputStream to Socket[addr=/127.0.0.1
,port=36965,localport=4445]
java.io.EOFException
       at

java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2228)
       at

java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2694)
       at
java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:761)
       at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
       at org.apache.log4j.net.SocketNode.<init>(SocketNode.java:55)
       at NRTSocketServer.main(NRTSocketServer.java:46)

So from logging messages from Java application using log4j to Java
ServerSocket works fine, but from C++ application using log4cxx 0.10 does
not work...

Could be the problem the type of Appender I am using? Maybe I should use
something like XMLSocketAppender or so?

Thanks in advance,

Mh



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]







---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to