Я создал класс MethodLogger , который я создаю в начале метода.
Он определяет имя класса и имя метода.
У него также есть удобный elapsedTime logger, к которому вы обращаетесь, вызывая methodLogger.end () .
Использование - поместите это в начало метода для регистрации:
MethodLogger methodLogger = new MethodLogger();
Чтобы опциональнопротоколировать некоторые сообщения отладки:
methodLogger.d("optionally log some debug messages");
Для регистрации завершения метода и отображения времени, прошедшего с момента его запуска:
methodLogger.end();
Результаты:
D/com.domain.app.MainActivity: onCreate()
D/com.domain.app.MainActivity: onCreate() optionally log some debug messages
D/com.domain.app.MainActivity: onCreate() finished in 0.123 seconds.
Класс MethodLogger:
public class MethodLogger {
// Private Fields
private String tag;
private String methodName;
private long startTime;
// Constructor
public MethodLogger() {
if (BuildConfig.DEBUG) { // Avoid doing any processing nor debug logging when built for RELEASE.
StackTraceElement callersStackTraceElement = Thread.currentThread().getStackTrace()[3];
tag = callersStackTraceElement.getClassName();
methodName = callersStackTraceElement.getMethodName() + "()";
startTime = System.currentTimeMillis();
Log.d(tag, this.methodName);
}
}
// Public Methods
public void e(String message) {
Log.e(tag, methodName + " " + message);
}
public void i(String message) {
Log.i(tag, methodName + " " + message);
}
public void d(String message) {
if (BuildConfig.DEBUG) { // Avoid doing any debug logging when built for RELEASE.
Log.d(tag, methodName + " " + message);
}
}
public void end() {
if (BuildConfig.DEBUG) { // Avoid doing any processing nor debug logging when built for RELEASE.
long elapsedMillis = System.currentTimeMillis() - startTime;
Log.d(tag, String.format("%s finished in %.3f seconds.", methodName, 0.001f * elapsedMillis));
}
}
}