Merge "Log UI events to traces"
This commit is contained in:
commit
a9666fccb9
@ -131,6 +131,10 @@ public final class Trace {
|
||||
private static native void nativeAsyncTraceBegin(long tag, String name, int cookie);
|
||||
@FastNative
|
||||
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() {
|
||||
}
|
||||
@ -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
|
||||
* 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);
|
||||
}
|
||||
|
||||
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[] = {
|
||||
/* name, signature, funcPtr */
|
||||
{ "nativeSetAppTracingAllowed",
|
||||
@ -116,6 +132,12 @@ static const JNINativeMethod gTraceMethods[] = {
|
||||
{ "nativeAsyncTraceEnd",
|
||||
"(JLjava/lang/String;I)V",
|
||||
(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 ----------------
|
||||
{ "nativeGetEnabledTags",
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.log
|
||||
|
||||
import android.os.Trace
|
||||
import android.util.Log
|
||||
import com.android.systemui.log.dagger.LogModule
|
||||
import java.io.PrintWriter
|
||||
@ -169,7 +170,7 @@ class LogBuffer(
|
||||
buffer.add(message as LogMessageImpl)
|
||||
if (logcatEchoTracker.isBufferLoggable(name, message.level) ||
|
||||
logcatEchoTracker.isTagLoggable(message.tag, message.level)) {
|
||||
echoToLogcat(message)
|
||||
echo(message)
|
||||
}
|
||||
}
|
||||
|
||||
@ -219,7 +220,7 @@ class LogBuffer(
|
||||
pw.println(message.printer(message))
|
||||
}
|
||||
|
||||
private fun echoToLogcat(message: LogMessage) {
|
||||
private fun echo(message: LogMessage) {
|
||||
val strMessage = message.printer(message)
|
||||
when (message.level) {
|
||||
LogLevel.VERBOSE -> Log.v(message.tag, strMessage)
|
||||
@ -229,6 +230,7 @@ class LogBuffer(
|
||||
LogLevel.ERROR -> Log.e(message.tag, strMessage)
|
||||
LogLevel.WTF -> Log.wtf(message.tag, strMessage)
|
||||
}
|
||||
Trace.instantForTrack(Trace.TRACE_TAG_APP, "UI Events", strMessage)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user