add most recent log lines to crash reports

This commit is contained in:
Helium314 2024-01-02 09:59:12 +01:00
parent af957be561
commit 5f42d00bca
3 changed files with 6 additions and 3 deletions

View file

@ -11,6 +11,7 @@ import android.os.Build
import org.dslul.openboard.inputmethod.latin.BuildConfig import org.dslul.openboard.inputmethod.latin.BuildConfig
import org.dslul.openboard.inputmethod.latin.settings.DebugSettings import org.dslul.openboard.inputmethod.latin.settings.DebugSettings
import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils import org.dslul.openboard.inputmethod.latin.utils.DeviceProtectedUtils
import org.dslul.openboard.inputmethod.latin.utils.Log
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.io.PrintWriter import java.io.PrintWriter
@ -54,6 +55,8 @@ Device: ${Build.BRAND} ${Build.DEVICE}, Android ${Build.VERSION.RELEASE}
Locale: ${Locale.getDefault()} Locale: ${Locale.getDefault()}
Stack trace: Stack trace:
$stackTrace $stackTrace
Last log:
${Log.getLog(100).joinToString("\n")}
""") """)
defaultUncaughtExceptionHandler!!.uncaughtException(t, e) defaultUncaughtExceptionHandler!!.uncaughtException(t, e)
} }

View file

@ -47,7 +47,7 @@ fun loadCustomLayout(uri: Uri?, localeString: String, context: Context, onAdded:
fun loadCustomLayout(layoutContent: String, layoutName: String, localeString: String, context: Context, onAdded: (String) -> Unit) { fun loadCustomLayout(layoutContent: String, layoutName: String, localeString: String, context: Context, onAdded: (String) -> Unit) {
var name = layoutName var name = layoutName
val isJson = checkLayout(layoutContent, context) val isJson = checkLayout(layoutContent, context)
?: return infoDialog(context, context.getString(R.string.layout_error, "invalid layout file, ${Log.getLog().lastOrNull { it.tag == TAG }?.message}")) ?: return infoDialog(context, context.getString(R.string.layout_error, "invalid layout file, ${Log.getLog(10).lastOrNull { it.tag == TAG }?.message}"))
AlertDialog.Builder(context) AlertDialog.Builder(context)
.setTitle(R.string.title_layout_name_select) .setTitle(R.string.title_layout_name_select)
@ -146,7 +146,7 @@ fun editCustomLayout(layoutName: String, context: Context, startContent: String?
val isJson = checkLayout(content, context) val isJson = checkLayout(content, context)
if (isJson == null) { if (isJson == null) {
editCustomLayout(layoutName, context, content) editCustomLayout(layoutName, context, content)
infoDialog(context, context.getString(R.string.layout_error, Log.getLog().lastOrNull { it.tag == TAG }?.message)) infoDialog(context, context.getString(R.string.layout_error, Log.getLog(10).lastOrNull { it.tag == TAG }?.message))
} else { } else {
val wasJson = file.name.substringAfterLast(".") == "json" val wasJson = file.name.substringAfterLast(".") == "json"
file.writeText(content) file.writeText(content)

View file

@ -81,7 +81,7 @@ object Log {
private val logLines: MutableList<LogLine> = ArrayList(2000) private val logLines: MutableList<LogLine> = ArrayList(2000)
/** returns a copy of [logLines] */ /** returns a copy of [logLines] */
fun getLog() = synchronized(logLines) { logLines.toList() } fun getLog(maxLines: Int = logLines.size) = synchronized(logLines) { logLines.takeLast(maxLines) }
} }
data class LogLine(val level: Char, val tag: String?, val message: String) { data class LogLine(val level: Char, val tag: String?, val message: String) {