
前提・実現したいこと
複数のサーバから出力されるログを集約するため、log4j2のSocketAppenderを使用してログ出力を行っています。Exception発生時は、例外オブジェクトを引数に指定することにより、スタックトレースが出力されるようにしたいです。
発生している問題
SocketAppender経由でログ出力時に、スタックトレースがファイルに出力されない状態です。※RollingFileAppenderを指定した場合は、出力されます。
[2019-02-06 23:59:39]:ERROR - hostname=xxxxx user_cd=xxxxx エラー!
java.lang.IllegalArgumentException: Oops! ←SocketAppenderの場合、この行以降が出力されない
:
該当のソースコード
Java
1logger.error("エラー!",new IllegalArgumentException("Oops!")); 2```log4j2.xml 3(送信側) 4<Appenders> 5 <Socket name="mySocket" host="localhost" port="4712" reconnectionDelayMillis="100000"> 6 <SerializedLayout /> 7 </Socket> 8</Appenders> 9 10<Loggers> ※rootロガーの記述は省略。 11 <Logger name="mylogger" level="debug"> 12 <AppenderRef ref="mySocket"/> 13 </Logger> 14</Loggers> 15 16(受信側) 17<Appenders> 18 <RollingFile name="mylogger" fileName="c:/applog/test.log" filePattern="c:/applog/test_%d{yyyy-MM-dd}-%i.zip"> 19 <PatternLayout pattern="[${date}]:%-5p - hostname=%X{hostname} user_cd=%X{userCd} %m%n%ex"/> 20 <Policies> 21 <TimeBasedTriggeringPolicy /> 22 </Policies> 23 </RollingFile> 24</Appenders> 25 26<Loggers> ※rootロガーの記述は省略。 27 <Logger name="mylogger" level="debug"> 28 <AppenderRef ref="mylogger"/> 29 </Logger> 30</Loggers> 31### 試したこと 32送信側のSocketAppenderのlayoutを「SerializedLayout」→「PatternLayout」にしてみましたが、java.io.StreamCorruptedExceptionでエラーとなってしまいました。 33----- (追記)発生したException 34ERROR org.apache.logging.log4j.core.net.server.TcpSocketServer.4712 - IOException encountered while reading from socket 35java.io.StreamCorruptedException: invalid type code: 5B 36 37### 補足情報(FW/ツールのバージョンなど) 38log4jバージョン:2.3 39送信側 JDK1.6 受信側 JDK1.8


回答2件
あなたの回答
tips
プレビュー