You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Ralph Goers (JIRA)" <ji...@apache.org> on 2013/03/25 01:57:16 UTC

[jira] [Commented] (LOG4J2-181) SocketAppender reconnection doesn't work

    [ https://issues.apache.org/jira/browse/LOG4J2-181?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13612340#comment-13612340 ] 

Ralph Goers commented on LOG4J2-181:
------------------------------------

Fixed in revision 1460497. Please verify and close.
                
> SocketAppender reconnection doesn't work
> ----------------------------------------
>
>                 Key: LOG4J2-181
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-181
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 2.0-beta4
>            Reporter: Ralph Goers
>
> This issue was actually reported by Werner Goeschl on the developers mailing list.
> We configured a SocketAppender with a reconnectionDelay and defaultLayout (SerializedLayout) in a XML-Config File.
> After starting the application, the SocketAppender tries to open the socket periodical.
> As the next step, we start the application with the SocketServer, and so the Appender connects to it.
> But after we get the following Exception, when we will open the ObjectInputStream (final ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
>  
> Exception in thread "Thread-2" java.lang.RuntimeException: java.io.StreamCorruptedException: invalid stream header: 7372003E
>         at test.logger.LoggerTest_1$TCPSocketServer.run(LoggerTest_1.java:83)
> Caused by: java.io.StreamCorruptedException: invalid stream header: 7372003E
>         at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
>         at java.io.ObjectInputStream.<init>(Unknown Source)
>         at test.logger.LoggerTest_1$TCPSocketServer.run(LoggerTest_1.java:72)
>  
> The reason is:
> At the Startup is no socket server available, therefore a dummy ByteArrayOutputStream is created.
> See TCPSocketManager:230
> After that, the Header of the layout (Object stream header) is written to the Dummy ByteArrayOutputStream.
> See AbstractOutputStreamAppender:62
>  
> If the Reconnector-Thread succeeds, the Dummy ByteArrayOutputStream is changed to the OutputStream from the socket.
> See TCPSocketManager:175
> But after this action the object stream header is not written again!
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

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