aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/LatinImeLogger.java
diff options
context:
space:
mode:
authorsatok <satok@google.com>2010-06-01 16:13:29 +0900
committersatok <satok@google.com>2010-06-01 17:07:39 +0900
commite607db631d33b15c4ce451782023f8c5f7ef5044 (patch)
tree1d37d986e9d840f02f37c8bbb5fb677ea9d5d329 /java/src/com/android/inputmethod/latin/LatinImeLogger.java
parent7c00957e4635a8edd6a5f0525b12acac5e627a07 (diff)
downloadlatinime-e607db631d33b15c4ce451782023f8c5f7ef5044.tar.gz
latinime-e607db631d33b15c4ce451782023f8c5f7ef5044.tar.xz
latinime-e607db631d33b15c4ce451782023f8c5f7ef5044.zip
Get the log of exceptions. And delete the gradient background.
- Add a logger of Exception - Catch RuntimeException where bug reported. - Delete gradient background. Change-Id: I98b5fbc4a51163de7e56bee4f8312585d8e98eb7
Diffstat (limited to 'java/src/com/android/inputmethod/latin/LatinImeLogger.java')
-rw-r--r--java/src/com/android/inputmethod/latin/LatinImeLogger.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/LatinImeLogger.java b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
index a871b4aff..b497c0c66 100644
--- a/java/src/com/android/inputmethod/latin/LatinImeLogger.java
+++ b/java/src/com/android/inputmethod/latin/LatinImeLogger.java
@@ -26,12 +26,16 @@ import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.Log;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = "LatinIMELogs";
private static boolean sDBG = false;
+ // SUPPRESS_EXCEPTION should be true when released to public.
+ private static final boolean SUPPRESS_EXCEPTION = false;
// DEFAULT_LOG_ENABLED should be false when released to public.
private static final boolean DEFAULT_LOG_ENABLED = true;
@@ -49,6 +53,7 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
private static final int ID_THEME_ID = 7;
private static final int ID_SETTING_AUTO_COMPLETE = 8;
private static final int ID_VERSION = 9;
+ private static final int ID_EXCEPTION = 10;
private static final String PREF_ENABLE_LOG = "enable_logging";
private static final String PREF_DEBUG_MODE = "debug_mode";
@@ -197,6 +202,13 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
}
}
+ private void addExceptionEntry(long time, String[] data) {
+ if (sDBG) {
+ Log.d(TAG, "Log Exception. (1)");
+ }
+ mLogBuffer.add(new LogEntry(time, ID_EXCEPTION, data));
+ }
+
private void flushPrivacyLogSafely() {
if (sDBG) {
Log.d(TAG, "Log theme Id. (" + mPrivacyLogBuffer.size() + ")");
@@ -270,6 +282,16 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
}
}
break;
+ case ID_EXCEPTION:
+ dataStrings = (String[]) data;
+ if (dataStrings.length < 2) {
+ if (sDBG) {
+ Log.e(TAG, "The length of logged string array is invalid.");
+ }
+ break;
+ }
+ addExceptionEntry(System.currentTimeMillis(), dataStrings);
+ break;
default:
if (sDBG) {
Log.e(TAG, "Log Tag is not entried.");
@@ -299,6 +321,12 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
mLastTimeSend = now;
}
+ private void commitInternalAndStopSelf() {
+ Log.e(TAG, "Exception was caused and let's die.");
+ commitInternal();
+ ((LatinIME) mContext).stopSelf();
+ }
+
private synchronized void sendLogToDropBox(int tag, Object s) {
long now = System.currentTimeMillis();
if (sDBG) {
@@ -405,6 +433,23 @@ public class LatinImeLogger implements SharedPreferences.OnSharedPreferenceChang
}
}
+ public static void logOnException(String metaData, RuntimeException e) {
+ if (sLogEnabled) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream ps = new PrintStream(baos);
+ e.printStackTrace(ps);
+ String exceptionString = new String(baos.toByteArray());
+ sLatinImeLogger.sendLogToDropBox(
+ ID_EXCEPTION, new String[] {metaData, exceptionString});
+ Log.e(TAG, "Exception: " + exceptionString);
+ if (SUPPRESS_EXCEPTION) {
+ sLatinImeLogger.commitInternalAndStopSelf();
+ } else {
+ throw e;
+ }
+ }
+ }
+
private static class LogSerializer {
private static void appendWithLength(StringBuffer sb, String data) {
sb.append(data.length());