Merge "Log UI events to traces"
This commit is contained in:
@@ -131,6 +131,10 @@ public final class Trace {
|
|||||||
private static native void nativeAsyncTraceBegin(long tag, String name, int cookie);
|
private static native void nativeAsyncTraceBegin(long tag, String name, int cookie);
|
||||||
@FastNative
|
@FastNative
|
||||||
private static native void nativeAsyncTraceEnd(long tag, String name, int cookie);
|
private static native void nativeAsyncTraceEnd(long tag, String name, int cookie);
|
||||||
|
@FastNative
|
||||||
|
private static native void nativeInstant(long tag, String name);
|
||||||
|
@FastNative
|
||||||
|
private static native void nativeInstantForTrack(long tag, String trackName, String name);
|
||||||
|
|
||||||
private Trace() {
|
private Trace() {
|
||||||
}
|
}
|
||||||
@@ -257,6 +261,42 @@ public final class Trace {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes a trace message to indicate that a given section of code was invoked.
|
||||||
|
*
|
||||||
|
* @param traceTag The trace tag.
|
||||||
|
* @param methodName The method name to appear in the trace.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static void instant(long traceTag, String methodName) {
|
||||||
|
if (methodName == null) {
|
||||||
|
throw new IllegalArgumentException("methodName cannot be null");
|
||||||
|
}
|
||||||
|
if (isTagEnabled(traceTag)) {
|
||||||
|
nativeInstant(traceTag, methodName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes a trace message to indicate that a given section of code was invoked.
|
||||||
|
*
|
||||||
|
* @param traceTag The trace tag.
|
||||||
|
* @param trackName The track where the event should appear in the trace.
|
||||||
|
* @param methodName The method name to appear in the trace.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static void instantForTrack(long traceTag, String trackName, String methodName) {
|
||||||
|
if (trackName == null) {
|
||||||
|
throw new IllegalArgumentException("trackName cannot be null");
|
||||||
|
}
|
||||||
|
if (methodName == null) {
|
||||||
|
throw new IllegalArgumentException("methodName cannot be null");
|
||||||
|
}
|
||||||
|
if (isTagEnabled(traceTag)) {
|
||||||
|
nativeInstantForTrack(traceTag, trackName, methodName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether or not tracing is currently enabled. This is useful to avoid intermediate
|
* Checks whether or not tracing is currently enabled. This is useful to avoid intermediate
|
||||||
* string creation for trace sections that require formatting. It is not necessary
|
* string creation for trace sections that require formatting. It is not necessary
|
||||||
|
|||||||
@@ -90,6 +90,22 @@ static void android_os_Trace_nativeSetTracingEnabled(JNIEnv*, jclass, jboolean e
|
|||||||
atrace_set_tracing_enabled(enabled);
|
atrace_set_tracing_enabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void android_os_Trace_nativeInstant(JNIEnv* env, jclass,
|
||||||
|
jlong tag, jstring nameStr) {
|
||||||
|
withString(env, nameStr, [tag](char* str) {
|
||||||
|
atrace_instant(tag, str);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static void android_os_Trace_nativeInstantForTrack(JNIEnv* env, jclass,
|
||||||
|
jlong tag, jstring trackStr, jstring nameStr) {
|
||||||
|
withString(env, trackStr, [env, tag, nameStr](char* track) {
|
||||||
|
withString(env, nameStr, [tag, track](char* name) {
|
||||||
|
atrace_instant_for_track(tag, track, name);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
static const JNINativeMethod gTraceMethods[] = {
|
static const JNINativeMethod gTraceMethods[] = {
|
||||||
/* name, signature, funcPtr */
|
/* name, signature, funcPtr */
|
||||||
{ "nativeSetAppTracingAllowed",
|
{ "nativeSetAppTracingAllowed",
|
||||||
@@ -116,6 +132,12 @@ static const JNINativeMethod gTraceMethods[] = {
|
|||||||
{ "nativeAsyncTraceEnd",
|
{ "nativeAsyncTraceEnd",
|
||||||
"(JLjava/lang/String;I)V",
|
"(JLjava/lang/String;I)V",
|
||||||
(void*)android_os_Trace_nativeAsyncTraceEnd },
|
(void*)android_os_Trace_nativeAsyncTraceEnd },
|
||||||
|
{ "nativeInstant",
|
||||||
|
"(JLjava/lang/String;)V",
|
||||||
|
(void*)android_os_Trace_nativeInstant },
|
||||||
|
{ "nativeInstantForTrack",
|
||||||
|
"(JLjava/lang/String;Ljava/lang/String;)V",
|
||||||
|
(void*)android_os_Trace_nativeInstantForTrack },
|
||||||
|
|
||||||
// ----------- @CriticalNative ----------------
|
// ----------- @CriticalNative ----------------
|
||||||
{ "nativeGetEnabledTags",
|
{ "nativeGetEnabledTags",
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.systemui.log
|
package com.android.systemui.log
|
||||||
|
|
||||||
|
import android.os.Trace
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.android.systemui.log.dagger.LogModule
|
import com.android.systemui.log.dagger.LogModule
|
||||||
import java.io.PrintWriter
|
import java.io.PrintWriter
|
||||||
@@ -169,7 +170,7 @@ class LogBuffer(
|
|||||||
buffer.add(message as LogMessageImpl)
|
buffer.add(message as LogMessageImpl)
|
||||||
if (logcatEchoTracker.isBufferLoggable(name, message.level) ||
|
if (logcatEchoTracker.isBufferLoggable(name, message.level) ||
|
||||||
logcatEchoTracker.isTagLoggable(message.tag, message.level)) {
|
logcatEchoTracker.isTagLoggable(message.tag, message.level)) {
|
||||||
echoToLogcat(message)
|
echo(message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +220,7 @@ class LogBuffer(
|
|||||||
pw.println(message.printer(message))
|
pw.println(message.printer(message))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun echoToLogcat(message: LogMessage) {
|
private fun echo(message: LogMessage) {
|
||||||
val strMessage = message.printer(message)
|
val strMessage = message.printer(message)
|
||||||
when (message.level) {
|
when (message.level) {
|
||||||
LogLevel.VERBOSE -> Log.v(message.tag, strMessage)
|
LogLevel.VERBOSE -> Log.v(message.tag, strMessage)
|
||||||
@@ -229,6 +230,7 @@ class LogBuffer(
|
|||||||
LogLevel.ERROR -> Log.e(message.tag, strMessage)
|
LogLevel.ERROR -> Log.e(message.tag, strMessage)
|
||||||
LogLevel.WTF -> Log.wtf(message.tag, strMessage)
|
LogLevel.WTF -> Log.wtf(message.tag, strMessage)
|
||||||
}
|
}
|
||||||
|
Trace.instantForTrack(Trace.TRACE_TAG_APP, "UI Events", strMessage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user