[ 
https://issues.apache.org/jira/browse/LOG4J2-625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bryan Hsueh closed LOG4J2-625.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.0-rc2

> Serialization error with SocketAppender and Asynch Logger
> ---------------------------------------------------------
>
>                 Key: LOG4J2-625
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-625
>             Project: Log4j 2
>          Issue Type: Question
>          Components: Appenders
>    Affects Versions: 2.0-rc1
>         Environment: Ubuntu 12.04, Java 7
>            Reporter: Bryan Hsueh
>            Assignee: Remko Popma
>             Fix For: 2.0-rc2
>
>
> I'm testing a simple SocketAppender, which works fine until I switch to 
> asynchronous loggers.  Once I turn on async logging, I get:
> 2014-04-29 21:17:26,029 ERROR Serialization of LogEvent failed. 
> java.io.NotSerializableException: 
> org.apache.logging.log4j.core.Logger$PrivateConfig
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
>       at 
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
>       at 
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
>       at 
> java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)
>       at 
> java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)
>       at 
> java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
>       at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
>       at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
>       at 
> org.apache.logging.log4j.core.layout.SerializedLayout.toByteArray(SerializedLayout.java:64)
>       at 
> org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:118)
>       at 
> org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97)
>       at 
> org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:425)
>       at 
> org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406)
>       at 
> org.apache.logging.log4j.core.Logger$PrivateConfig.logEvent(Logger.java:275)
>       at 
> org.apache.logging.log4j.core.async.AsyncLogger.actualAsyncLog(AsyncLogger.java:289)
>       at 
> org.apache.logging.log4j.core.async.RingBufferLogEvent.execute(RingBufferLogEvent.java:99)
>       at 
> org.apache.logging.log4j.core.async.RingBufferLogEventHandler.onEvent(RingBufferLogEventHandler.java:43)
>       at 
> org.apache.logging.log4j.core.async.RingBufferLogEventHandler.onEvent(RingBufferLogEventHandler.java:28)
>       at 
> com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:744)
>  My client is configured with:
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration status="INFO">
>   <Appenders>
>     <Console name="MyConsole" target="SYSTEM_OUT">
>       <PatternLayout pattern="%d{HH:mm:ss.SSS}{EST} %-5level- %msg%n"/>
>     </Console>
>     <Socket name="MySocket" host="localhost" port="8888">
>       <SerializedLayout />
>     </Socket>
>   </Appenders>
>   <Loggers>
>     <Root level="INFO">
>       <AppenderRef ref="MyConsole"/>
>       <AppenderRef ref="MySocket"/>
>     </Root>
>   </Loggers>
> </Configuration>
> My server is configured with:
> <?xml version="1.0" encoding="UTF-8"?>
> <Configuration status="INFO">
>   <Appenders>
>     <Console name="MyConsole" target="SYSTEM_OUT">
>       <PatternLayout pattern="%d{HH:mm:ss.SSS}{EST} %-5level- %msg%n"/>
>     </Console>
>   </Appenders>
>   <Loggers>
>     <Root level="INFO">
>       <AppenderRef ref="MyConsole"/>
>     </Root>
>   </Loggers>
> </Configuration>
> The client just does a LogManager.getLogger().info("{}", "hello").
> The server just creates a SocketServer:
> SocketServer server = new SocketServer(8888);
> server.run();
> All works fine until I add this into the client:
> System.setProperty("Log4jContextSelector",                
> "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
> Am I missing something?  Please advise.
> Thanks
>    



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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

Reply via email to