質問: ### 前提・実現したいこと 複数のサーバから出力されるログを集約するため、log4j2のSocketAppenderを使用してログ出力を行っています。Exception発生時は、例外オブジェクトを引数に指定することにより、スタックトレースが出力されるようにしたいです。 ### 発生している問題 SocketAppender経由でログ出力時に、スタックトレースがファイルに出力されない状態です。※RollingFileAppenderを指定した場合は、出力されます。 [2019-02-06 23:59:39]:ERROR - hostname=xxxxx user_cd=xxxxx エラー! java.lang.IllegalArgumentException: Oops! ←SocketAppenderの場合、この行以降が出力されない : ### 該当のソースコード ``` logger.error("エラー!",new IllegalArgumentException("Oops!")); ``` log4j2.xml (送信側) ※rootロガーの記述は省略。 (受信側) ※rootロガーの記述は省略。 ### 試したこと 送信側のSocketAppenderのlayoutを「SerializedLayout」→「PatternLayout」にしてみましたが、java.io.StreamCorruptedExceptionでエラーとなってしまいました。 ----- (追記)発生したException ERROR org.apache.logging.log4j.core.net.server.TcpSocketServer.4712 - IOException encountered while reading from socket java.io.StreamCorruptedException: invalid type code: 5B ### 補足情報(FW/ツールのバージョンなど) log4jバージョン:2.3 送信側 JDK1.6 受信側 JDK1.8
回答: Javaソース中の「logger」変数の実体のクラスは何でしょうか?(ExtendedLoggerクラスですか?) また、RollingFileAppenderで成功した際のlog4j2.xmlも公開して頂けると解決が早いかもしれません。