Bryan Hsueh created LOG4J2-625: ---------------------------------- Summary: 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
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