[
https://issues.apache.org/jira/browse/LOG4J2-1969?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16079124#comment-16079124
]
YU Chang commented on LOG4J2-1969:
----------------------------------
I try version 2.8.2 again, and record the exception output.
This is the client exception stack trace:
{code:none}
2017-07-08 20:25:40,164 http-nio-8380-exec-1 ERROR Unable to write to stream
TCP:127.0.0.1:9898 for appender socket:
org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing
to TCP:127.0.0.1:9898
2017-07-08 20:25:40,164 http-nio-8380-exec-1 ERROR An exception occurred
processing Appender socket
org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing
to TCP:127.0.0.1:9898
at
org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:229)
at
org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:201)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.writeByteArrayToManager(AbstractOutputStreamAppender.java:186)
at
org.apache.logging.log4j.core.appender.SocketAppender.directEncodeEvent(SocketAppender.java:446)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:170)
at
org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:161)
at
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448)
at
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
at
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403)
at
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2091)
at
org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:1988)
at
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1960)
at
org.apache.logging.log4j.spi.AbstractLogger.warn(AbstractLogger.java:2526)
..............
{code}
This is the output of TcpSocketServer :
{code:none}
ERROR 2017-07-08 20:25:40,081 [][] 9898 (Log4j2-1) IOException encountered
while reading from socket java.io.InvalidObjectException: Class is not allowed
for deserialization: java.util.Collections$UnmodifiableMap
at
org.apache.logging.log4j.core.util.FilteredObjectInputStream.resolveClass(FilteredObjectInputStream.java:56)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at
org.apache.logging.log4j.core.net.server.ObjectInputStreamLogEventBridge.logEvents(ObjectInputStreamLogEventBridge.java:54)
at
org.apache.logging.log4j.core.net.server.ObjectInputStreamLogEventBridge.logEvents(ObjectInputStreamLogEventBridge.java:32)
at
org.apache.logging.log4j.core.net.server.TcpSocketServer$SocketHandler.run(TcpSocketServer.java:87)
{code}
Hope to be helpful.
> TcpSocketServer does not replace any “{}” in message
> ----------------------------------------------------
>
> Key: LOG4J2-1969
> URL: https://issues.apache.org/jira/browse/LOG4J2-1969
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 2.6.2, 2.7
> Environment: Spring boot 1.5.4
> java 8
> Reporter: YU Chang
>
> I have a spring boot(v1.5.4) web application which use log4j-2.7 for logging.
> It works well when write log message to file or console, but when send
> message to `TcpSocketServer`, the log server just output the message without
> the "{}" formatting. for example, for this code:
> {code:java}
> logger.info("Request from [{}] to [{}]", ipInfo, reqPath);
> {code}
> The `RollingfileAppender` and `ConsoleAppender` will output:
> {code:none}
> INFO 2017-07-06 16:46:07,929 [127.0.0.1][/senten/align] AuthFilter
> (http-nio-8180-exec-2) Request from [127.0.0.1] to [/senten/align]
> {code}
> But the `SocketAppender` just ouput:
> {code:none}
> INFO 2017-07-06 16:46:07,929 [127.0.0.1][/senten/align] AuthFilter
> (http-nio-8180-exec-2) Request from [{}] to [{}]
> {code}
> This is my config with `SocketAppenders` in log4j.xml
> {code:xml}
> <Appenders>
> <Socket name="socket" host="127.0.0.1" port="9898">
> <SerializedLayout />
> </Socket>
> ........
> </Appenders>
> {code}
> This is my config file `log4j2-socket.xml` for `TcpSocketServer`:
> {code:xml}
> <Configuration status="WARN">
> <Appenders>
> <RollingFile name="default" fileName="Logs/app.log"
>
> filePattern="Logs/${date:yyyy-MM}/app-%d{yyyy-MM-dd}-%i.log.gz">
> <PatternLayout>
> <Pattern>%-5p %d [%X{ip}][%X{reqPath}] %c{1}
> (%t) %m %ex%n</Pattern>
> </PatternLayout>
> <Policies>
> <TimeBasedTriggeringPolicy interval = "30"
> modulate="true"/>
> <SizeBasedTriggeringPolicy size="200 MB" />
> </Policies>
> </RollingFile>
> </Appenders>
> <Loggers>
> <Root level="DEBUG">
> <AppenderRef ref="default" level="DEBUG" />
> </Root>
> </Loggers>
> </Configuration>
> {code}
> And, I use this command for start `TcpSocketServer`:
> {code:none}
> java -classpath log4j-core-2.7.jar:log4j-api-2.7.jar:jcommander-1.48.jar
> org.apache.logging.log4j.core.net.server.TcpSocketServer -p 9898 -c
> log4j2-socket.xml
> {code}
> What am I doing wrong? How to fix it? Thanks!
>
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)