Skip to content
forked from BOINC/boinc

Commit

Permalink
Print all categories in Event log -> GUI Messges ui.
Browse files Browse the repository at this point in the history
  • Loading branch information
talregev committed Jul 27, 2021
1 parent 3b13f0f commit b23df69
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 27 deletions.
1 change: 1 addition & 0 deletions android/BOINC/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ dependencies {
implementation "com.squareup.okio:okio:2.10.0"
implementation "org.apache.commons:commons-lang3:3.12.0"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'com.elvishew:xlog:1.11.0'

// lifecycle dependencies
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import edu.berkeley.boinc.client.MonitorAsync
import edu.berkeley.boinc.databinding.ActivitySplashBinding
import edu.berkeley.boinc.ui.eventlog.EventLogActivity
import edu.berkeley.boinc.utils.Logging
import edu.berkeley.boinc.utils.Logging.setAllCategory
import edu.berkeley.boinc.utils.Logging.setLogLevel
import edu.berkeley.boinc.utils.TaskRunner
import edu.berkeley.boinc.utils.getBitmapFromVectorDrawable
Expand Down Expand Up @@ -62,6 +63,7 @@ class SplashActivity : AppCompatActivity() {
BuildConfig.BUILD_TYPE.contains("xiaomi") && !monitor!!.welcomeStateFile
// read log level from monitor preferences and adjust accordingly
setLogLevel(monitor!!.logLevel)
setAllCategory()
} catch (e: Exception) {
Logging.logException(Logging.CATEGORY.GUI_ACTIVITY, "initializing log level failed.", e)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,11 @@
import edu.berkeley.boinc.databinding.EventLogGuiLayoutBinding;
import edu.berkeley.boinc.utils.BOINCUtils;
import edu.berkeley.boinc.utils.Logging;
import edu.berkeley.boinc.utils.Logging.CATEGORY;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;

public class EventLogGuiFragment extends Fragment {
private EventLogActivity a;
Expand Down Expand Up @@ -70,28 +72,34 @@ private void readLogcat() {
int number = getResources().getInteger(R.integer.eventlog_gui_messages);
a.getGuiLogData().clear();
try {
String logLevelFilter = Logging.TAG;
switch(Logging.LOGLEVEL) {
case 0:
return;
case 1:
logLevelFilter += ":E";
break;
case 2:
logLevelFilter += ":W";
break;
case 3:
logLevelFilter += ":I";
break;
case 4:
logLevelFilter += ":D";
break;
case 5:
logLevelFilter += ":V";
break;
HashSet<CATEGORY> categories = Logging.getLogCategory();
StringBuilder logLevelFilter = new StringBuilder();
for(CATEGORY category: categories) {
logLevelFilter.append(Logging.TAG).append("[").append(category).append("]");
switch(Logging.LOGLEVEL) {
case 0:
return;
case 1:
logLevelFilter.append(":E");
break;
case 2:
logLevelFilter.append(":W");
break;
case 3:
logLevelFilter.append(":I");
break;
case 4:
logLevelFilter.append(":D");
break;
case 5:
logLevelFilter.append(":V");
break;
}
logLevelFilter.append(" ");
}
String command = "logcat -d -t " + number + " -v time " + logLevelFilter + " *:S";
Process process =
Runtime.getRuntime().exec("logcat -d -t " + number + " -v time " + logLevelFilter + " *:S");
Runtime.getRuntime().exec(command);
// filtering logcat output by application package is not possible on command line
// devices with SDK > 13 will automatically "session filter"
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
*/
package edu.berkeley.boinc.utils

import android.util.Log
import com.elvishew.xlog.LogLevel
import com.elvishew.xlog.XLog

object Logging {
const val TAG = "BOINC_GUI"
Expand All @@ -28,11 +29,21 @@ object Logging {
@JvmField
var categories = HashSet<CATEGORY>()

val init = XLog.init(LogLevel.ALL)

@JvmStatic
fun setLogLevel(logLevel: Int) {
LOGLEVEL = logLevel
}

@JvmStatic
fun setAllCategory()
{
enumValues<CATEGORY>().forEach{
setLogCategory(it.name, true)
}
}

@JvmStatic
fun setLogCategory(logCategory: String, value: Boolean) {
try {
Expand All @@ -49,6 +60,11 @@ object Logging {
}
}

@JvmStatic
fun getLogCategory() : HashSet<Logging.CATEGORY> {
return categories
}

@JvmStatic
fun isLoggable(logLevel: LEVEL, logCategory: CATEGORY): Boolean {
return logLevel.logLevel <= LOGLEVEL && logCategory in categories
Expand All @@ -58,13 +74,14 @@ object Logging {
fun logMessage(logLevel: LEVEL, logCategory: CATEGORY, logMessage: String, e: Throwable? = null) {
if (!isLoggable(logLevel, logCategory)) return

val message = "[$logCategory] $logMessage"
val message = "$logMessage"
val tag = "$TAG[$logCategory]"
when (logLevel) {
LEVEL.ERROR -> Log.e(TAG, message, e)
LEVEL.WARNING -> Log.w(TAG, message)
LEVEL.INFO -> Log.i(TAG, message)
LEVEL.DEBUG -> Log.d(TAG, message)
LEVEL.VERBOSE -> Log.v(TAG, message)
LEVEL.ERROR -> XLog.tag(tag).e(message, e)
LEVEL.WARNING -> XLog.tag(tag).w(message)
LEVEL.INFO -> XLog.tag(tag).i(message)
LEVEL.DEBUG -> XLog.tag(tag).d(message)
LEVEL.VERBOSE -> XLog.tag(tag).v(message)
}
}

Expand Down

0 comments on commit b23df69

Please sign in to comment.