Skip to content

Instantly share code, notes, and snippets.

@LeoAndo
Last active October 9, 2023 11:56
Show Gist options
  • Save LeoAndo/74ecb070fb75999f551a7fdb25489469 to your computer and use it in GitHub Desktop.
Save LeoAndo/74ecb070fb75999f551a7fdb25489469 to your computer and use it in GitHub Desktop.
[Android] Tag名とメッセージに呼び出し元の情報を自動付与するLog出力クラス
package jp.xxx; // TODO 環境によってパスを変えてください
import android.util.Log;
import android.util.Pair;
import androidx.annotation.NonNull;
public final class Logger {
private Logger() {
}
public static void i(@NonNull final String msg) {
final Pair<String, String> data = createMessage(msg);
Log.i(data.first, data.second);
}
public static void v(@NonNull final String msg) {
final Pair<String, String> data = createMessage(msg);
Log.v(data.first, data.second);
}
public static void d(@NonNull final String msg) {
final Pair<String, String> data = createMessage(msg);
Log.d(data.first, data.second);
}
public static void w(@NonNull final String msg) {
final Pair<String, String> data = createMessage(msg);
Log.w(data.first, data.second);
}
public static void w(@NonNull final String msg, @NonNull final Throwable throwable) {
final Pair<String, String> data = createMessage(msg);
Log.w(data.first, data.second, throwable);
}
public static void e(@NonNull final String msg) {
final Pair<String, String> data = createMessage(msg);
Log.e(data.first, data.second);
}
public static void e(@NonNull final String msg, @NonNull final Throwable throwable) {
final Pair<String, String> data = createMessage(msg);
Log.e(data.first, data.second, throwable);
}
private static Pair<String, String> createMessage(@NonNull final String msg) {
final StackTraceElement stack = Thread.currentThread().getStackTrace()[4];
final String fullName = stack.getClassName();
final String tag = fullName.substring(fullName.lastIndexOf(".") + 1);
final String message = '<' + stack.getMethodName() + ":" + stack.getLineNumber() + "> " + msg;
return new Pair<>(tag, message);
}
}
@LeoAndo
Copy link
Author

LeoAndo commented Jun 28, 2023

使い方

Java

        Logger.i("Hello, Android");
        Logger.v("Hello, Android");
        Logger.d("Hello, Android");
        Logger.w("Hello, Android");
        Logger.e("Hello, Android");
        try {
            throw new NullPointerException("error!!!!");
        } catch (Exception ex) {
            Logger.w("Hello, Android", ex);
            Logger.e("Hello, Android", ex);
        }

実行結果 Logcat

2023-07-03 13:47:31.041  7756-7756  MapsActivity            com.leoleo2.mapdemo                 I  <onCreate:35> Hello, Android
2023-07-03 13:47:31.042  7756-7756  MapsActivity            com.leoleo2.mapdemo                 V  <onCreate:36> Hello, Android
2023-07-03 13:47:31.042  7756-7756  MapsActivity            com.leoleo2.mapdemo                 D  <onCreate:37> Hello, Android
2023-07-03 13:47:31.042  7756-7756  MapsActivity            com.leoleo2.mapdemo                 W  <onCreate:38> Hello, Android
2023-07-03 13:47:31.042  7756-7756  MapsActivity            com.leoleo2.mapdemo                 E  <onCreate:39> Hello, Android
2023-07-03 13:47:31.043  7756-7756  MapsActivity            com.leoleo2.mapdemo                 W  <onCreate:43> Hello, Android
                                                                                                    java.lang.NullPointerException: error!!!!
                                                                                                    	at com.leoleo2.mapdemo.MapsActivity.onCreate(MapsActivity.java:41)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8305)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8284)
                                                                                                    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7872)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
2023-07-03 13:47:31.043  7756-7756  MapsActivity            com.leoleo2.mapdemo                 E  <onCreate:44> Hello, Android
                                                                                                    java.lang.NullPointerException: error!!!!
                                                                                                    	at com.leoleo2.mapdemo.MapsActivity.onCreate(MapsActivity.java:41)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8305)
                                                                                                    	at android.app.Activity.performCreate(Activity.java:8284)
                                                                                                    	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1417)
                                                                                                    	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3626)
                                                                                                    	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3782)
                                                                                                    	at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:101)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
                                                                                                    	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
                                                                                                    	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2307)
                                                                                                    	at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                                                    	at android.os.Looper.loopOnce(Looper.java:201)
                                                                                                    	at android.os.Looper.loop(Looper.java:288)
                                                                                                    	at android.app.ActivityThread.main(ActivityThread.java:7872)
                                                                                                    	at java.lang.reflect.Method.invoke(Native Method)
                                                                                                    	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
                                                                                                    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment