前提・実現したいこと
log4j2のSocketAppenderを使用してログ出力を行う為、TcpSocketServerを使用しています。
log4j2のバージョンを2.17に上げる為、以下GitHubサイトからダウンロードしたソースを元にjarを作成し、同様にTcpSocketServerを起動し、ログ出力するようにしたいです。
★追記★「TcpSocketServer 」を「UdpSocketServer 」に変えて起動したところ、ログ用フォルダが作成されました。TcpSocketServer で作成されない原因を解決したいです。
発生している問題・エラーメッセージ
コマンドプロンプトから起動はできるようになりましたが、ログが出力されません。
(起動時にログ出力用のフォルダやファイルが生成されません)
①実行時の引数は妥当でしょうか?(特にconfigLocation(log4j2.xml)の部分)
②その他修正漏れ、設定漏れはないでしょうか?
該当のソースコード
以下サイト(GitHub)からダウンロード(Testクラスを除く)
https://github.com/mtaketani113/logging-log4j-tools/tree/release-2.x/log4j-server
※pom.xmlの<parent>のversionは2.17.2を設定しています。
試したこと
①上記からダウンロードしたソースより、eclipse上でjarファイルを作成
テストクラス:JmsQueueReceiverTestでエラーが出る為、テストはスキップしています。
②JDKのjre\libフォルダに、jaxp.propertiesファイルを追加
javax.xml.stream.XMLInputFactory=com.sun.xml.internal.stream.XMLInputFactoryImpl javax.xml.stream.XMLOutputFactory=com.sun.xml.internal.stream.XMLOutputFactoryImpl
②コマンドプロンプトより、以下コマンドで起動(ファイル名やパス情報は仮の値です)
java -cp ./lib/* org.apache.logging.log4j.server.TcpSocketServer --wire-format=XML -a=localhost -p=4713 -c=C:/config/log4j2.xml
※-cの引数を「file:///C:/config/log4j2.xml」としても、現象が変わりませんでした。
その他
・デバッグでServerConfigurationFactoryクラスのメンバ変数pathに値が設定されていることは確認しました。
・コマンドプロンプトでTcpSocketServer起動後、タスクマネージャーでポート番号:4713に該当するプロセスが起動していることを確認しました。(netstatでポート番号確認後、該当のプロセスを確認)
・★追加★上記のコマンドで「TcpSocketServer 」を「UdpSocketServer 」に変えて起動したところ、ログ用フォルダが作成されました。
→デバッグしたところ、AbstractSocketServerのコンストラクタで、LogManager.getLogger呼び出し時にフォルダが生成されました。
同じメソッドをTcpSocketServer もUdpSocketServer も呼び出しているがTcpSocketServer の時は作成されないようです。
この原因が分かれば、解決するのではと考えています。
補足情報(FW/ツールのバージョンなど)
log4jバージョン:2.17.2
使用しているライブラリ log4j-api-2.17.2.jar、log4j-core-2.17.2.jar、log4j-web-2.17.2.jar
その他ライブラリ(クラスパスに格納):
jackson-annotations-2.13.1.jar
jackson-core-2.13.1.jar
jackson-databind-2.13.1.jar
jackson-dataformat-xml-2.13.1.jar
jboss-jms-api_1.1_spec-1.0.1.Final.jar
JDKバージョン:jdk1.8.0_152
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。