質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Apache log4j

Apache log4jは、Javaのログユーティリティです。Apache Software Foundationの元で開発されており、Apache Software Liense 2としてライセンスが与えられています。

受付中

最新log4j2でTcpSocketServerからのログ出力ができない

sweetfish
sweetfish

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Apache log4j

Apache log4jは、Javaのログユーティリティです。Apache Software Foundationの元で開発されており、Apache Software Liense 2としてライセンスが与えられています。

0回答

0評価

0クリップ

513閲覧

投稿2021/12/23 04:45

編集2022/05/11 10:52

前提・実現したいこと

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Apache log4j

Apache log4jは、Javaのログユーティリティです。Apache Software Foundationの元で開発されており、Apache Software Liense 2としてライセンスが与えられています。