logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dmitry <dmip...@gmail.com>
Subject Re: Problems with log4j SimpleSocketServer connection
Date Thu, 26 Mar 2009 11:38:43 GMT
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 <dmiperl@gmail.com>
>
>   
>> 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: log4j-user-unsubscribe@logging.apache.org
>> For additional commands, e-mail: log4j-user-help@logging.apache.org
>>
>>
>>     
>
>
>   



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message