アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。
現在log4jを使用したログの出力を検討しております。
その中で1点質問させてください。
Javaの初心者のため、質問がわかりにくいかもしれません。
申し訳ございません。

【質問】
クラスAのinit処理の中でログ出力用クラスBをインスタンス化し、
クラスAのメソッドCの中で、ログ出力用クラスBのログ出力メソッドDを実行することでログ出力させる方法を考えております。
ここでメソッドDで出力させるログの中にメソッドCの名前を出力させたいのですが、
方法がわかりません。
わかる方、教えていただけないでしょうか。

よろしくお願いいたします。

A 回答 (2件)

あぁ、そうですね。

そうなってしまいますよね。
この形でログ出力を行うならば、出力メッセージにメソッド名を追加するしかないのではないでしょうか?
メソッドDを呼び出したメソッド名(この場合ならメソッドC)を取得するには
Thread.currentThread().getStackTrace()[1].getMethodName();
とすればいいようです。
ただ、そんなに軽い処理ではないので気をつけてください。

もしくは呼び出し元でメソッド名を文字列として渡すかですね。
メンテナンスが面倒ですが、こちらのほうが処理は軽いです。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。

やはり、メソッド名を取得して実施するしかないんですね。

そのように作成したいと思います。

ありがとうございました。

お礼日時:2010/11/25 12:12

設定ファイルでレイアウトを指定すればいいのではないでしょうか。


参考URLはStrutsでのリファレンスとなっていますが、
log4jの設定に関してはStrutsを使用していなくても同様だと思いますので。

参考URL:http://struts.wasureppoi.com/util/05_layout.html

この回答への補足

ご回答ありがとうございます。
いただきました参考URLにある"%M"は使用してみたのですが、
メソッドDの名前が出力されてしまいます。

もし他の方法をご存知でしたら、再度ご教示いただけると大変助かります。

補足日時:2010/11/24 18:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!