私はアンドロイドの開発者であり、ロギングは大変です。私が持っていたJava/Androidの任意の場所でクラス名とメソッド名を取得
の形をしている私のログの規則を使用して、[クラス名:methodNameの()]
私は何かをログに記録する必要がありたびに、これは、特定の場所から正確な場所を見つける私を助けてログが生成され、多くの場合役立ちます。
代わりのたびに書い
のClassName
と
メソッド名
手動で私は方法を書きました。彼らはこれを行うより良いアプローチかもしれません。ループを使用しない場合の回答はです。です。
public static String getRef(Object object) {
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
String method = "";
if (elements.length > 0) {
for (int i = 0; i < elements.length; i++) {
if (elements[i].getClassName().equals(object.getClass().getCanonicalName())) {
method = elements[i].getMethodName();
break;
}
}
}
return "[" + object.getClass().getSimpleName() + "::" + method + "()]";
}
呼び出し:
Log.d(STRING_TAG、GlobalConfig.getRef(本)+ "サーバー 応答:" + JSON)。
iが既にgetEnclosingMethod())
Object.getClassを(使用しようとしました。
しかし、常に私はnullを返すだけでなく、それは右と呼ばれるメソッド名を返すことになっていますか?このClassオブジェクトが メソッド内のローカルクラスまたは匿名クラスを表す場合のドキュメントは
を言うように、基本となるクラスを直接囲む メソッドを表すMethodオブジェクトを返します。そうでない場合はnullを返します。特に このメソッドは、基になるクラスがローカルまたは の匿名クラスで、型宣言ですぐに囲まれている場合、つまりインスタンス イニシャライザまたは静的イニシャライザの場合はnullを返します。
返信
このクラスがローカルクラスまたは匿名クラスの場合は、基になる クラスのすぐに囲むメソッド。それ以外の場合はnull
使用* SLF4J *と*のlog4j *が好きなようにあなたは単に、再発明する必要がoutpusを設定することはできませんホイール... –
@TimothyTruckleあなたのフィードバックのためにありがとう、実際にアンドロイドは、独自のロギングライブラリを持っています、私が欲しいのは、アプリケーションの任意の時点でメソッド名を取得することです。 –
*「アンドロイドは独自のログライブラリを持っています」* - 間違っています:https://www.slf4j.org/android/ –