(クラスタ内の)DBへのlog4jロギング
-
20-09-2019 - |
質問
私は、Javaアプリケーションウィッヒは、クラスタ内の二台のマシン上で実行されており、それらの両方が1つのMySQLデータベースにログインします。すべてが正常に動作しますが、私は、データベースウィッヒで追加のフィールドは、リクエストから来ているIPを表していたいと思います。
私は2つの異なるlog4j.propertiesファイルを持つことでこの問題を解決しましたが、私はそれを行うためのよりよい方法があると思いますか?
このは、マシン上で異なるlog4j.propertiesファイル内の行は、次のとおりです。
log4j.appender.DB.sql=INSERT INTO log4j (date, category, priority, server, message) VALUES ('%d{dd MMM yyyy HH:mm:ss,SSS}','%c','%p','10.20.30.40','%m')
connection_ipのようなmysqlのために何がありますか?またはlog4jの中のプレースホルダ、私は、JavaアプリケーションからそこにIPを保存することができるように?
乾杯、ルーカス
解決
私はlog4jののマップされた診断コンテキストを使用してこれを解決しました。 私は、Javaアプリケーションを起動すると、私は、このコマンドを使用してIPを保存します。
MDC.put("serverIP", InetAddress.getLocalHost().getHostAddress());
そして今、私は私のlog4j.propertiesファイルのプレースホルダとして%のX {サーバIP}を使用することができます。
log4j.appender.DB.sql=INSERT INTO log4j (date, category, priority, server, sessionID, message) VALUES ('%d{dd/MM/yyyy HH:mm:ss,SSS}','%c','%p','%X{serverIP}','%X{sessionID}','%m')
ここではいくつかの良い例とのlog4jに関する優れた投稿はあり
http://onjava.com/pub/ / onjava / 2002/8月7日/ log4j.html?ページ= 3 の
所属していません StackOverflow