- ベストアンサー
[log4j]ログ出力クラスでのメソッド名出力方法
お世話になっております。 現在log4jを使用したログの出力を検討しております。 その中で1点質問させてください。 Javaの初心者のため、質問がわかりにくいかもしれません。 申し訳ございません。 【質問】 クラスAのinit処理の中でログ出力用クラスBをインスタンス化し、 クラスAのメソッドCの中で、ログ出力用クラスBのログ出力メソッドDを実行することでログ出力させる方法を考えております。 ここでメソッドDで出力させるログの中にメソッドCの名前を出力させたいのですが、 方法がわかりません。 わかる方、教えていただけないでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あぁ、そうですね。そうなってしまいますよね。 この形でログ出力を行うならば、出力メッセージにメソッド名を追加するしかないのではないでしょうか? メソッドDを呼び出したメソッド名(この場合ならメソッドC)を取得するには Thread.currentThread().getStackTrace()[1].getMethodName(); とすればいいようです。 ただ、そんなに軽い処理ではないので気をつけてください。 もしくは呼び出し元でメソッド名を文字列として渡すかですね。 メンテナンスが面倒ですが、こちらのほうが処理は軽いです。
その他の回答 (1)
- yamada_g
- ベストアンサー率68% (258/374)
設定ファイルでレイアウトを指定すればいいのではないでしょうか。 参考URLはStrutsでのリファレンスとなっていますが、 log4jの設定に関してはStrutsを使用していなくても同様だと思いますので。
補足
ご回答ありがとうございます。 いただきました参考URLにある"%M"は使用してみたのですが、 メソッドDの名前が出力されてしまいます。 もし他の方法をご存知でしたら、再度ご教示いただけると大変助かります。
お礼
ご回答ありがとうございました。 やはり、メソッド名を取得して実施するしかないんですね。 そのように作成したいと思います。 ありがとうございました。