增加Log4j配置 将日志打印到.logs目录下 避免崩溃后日志丢失无法分析问题

This commit is contained in:
TonyJiangWJ 2021-12-11 22:59:20 +08:00
parent d522fb4b22
commit c5ff927864
5 changed files with 24 additions and 9 deletions

View File

@ -24,7 +24,6 @@ import org.autojs.autojs.Pref;
import org.autojs.autojs.R;
import org.autojs.autojs.external.fileprovider.AppFileProvider;
import org.autojs.autojs.pluginclient.DevPluginService;
import org.autojs.autojs.timing.work.WorkProviderConstants;
import org.autojs.autojs.ui.floating.FloatyWindowManger;
import org.autojs.autojs.ui.floating.FullScreenFloatyWindow;
import org.autojs.autojs.ui.floating.layoutinspector.LayoutBoundsFloatyWindow;
@ -93,6 +92,7 @@ public class AutoJs extends com.stardust.autojs.AutoJs {
LocalBroadcastManager.getInstance(application).registerReceiver(mLayoutInspectBroadcastReceiver, intentFilter);
this.enableDebugLog = PreferenceManager.getDefaultSharedPreferences(GlobalAppContext.get())
.getBoolean(GlobalAppContext.getString(R.string.key_enable_debug_log), false);
setLogFilePath(Pref.getScriptDirPath());
}
private void capture(LayoutInspectFloatyWindow window) {

View File

@ -123,9 +123,9 @@ public class TimedTaskScheduler {
public static WorkProvider getWorkProvider(Context context) {
try {
PreferenceManager.getDefaultSharedPreferences(context).getString(WorkProviderConstants.ACTIVE_PROVIDER, WorkProviderConstants.WORK_MANAGER_PROVIDER);
PreferenceManager.getDefaultSharedPreferences(context).getString(WorkProviderConstants.ACTIVE_PROVIDER, WorkProviderConstants.ALARM_MANAGER_PROVIDER);
} catch (Exception e) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putString(WorkProviderConstants.ACTIVE_PROVIDER, WorkProviderConstants.WORK_MANAGER_PROVIDER).apply();
PreferenceManager.getDefaultSharedPreferences(context).edit().putString(WorkProviderConstants.ACTIVE_PROVIDER, WorkProviderConstants.ALARM_MANAGER_PROVIDER).apply();
}
String currentActive = PreferenceManager.getDefaultSharedPreferences(context)
.getString(WorkProviderConstants.ACTIVE_PROVIDER, WorkProviderConstants.WORK_MANAGER_PROVIDER);

View File

@ -12,9 +12,11 @@ import android.util.Log;
import com.stardust.app.GlobalAppContext;
import org.apache.log4j.Logger;
import org.autojs.autojs.BuildConfig;
import org.mozilla.javascript.RhinoException;
import com.stardust.view.accessibility.AccessibilityService;
import com.tencent.bugly.crashreport.BuglyLog;
import com.tencent.bugly.crashreport.CrashReport;
@ -24,6 +26,7 @@ import java.util.Map;
public class CrashHandler extends CrashReport.CrashHandleCallback implements UncaughtExceptionHandler {
private static final String TAG = "CrashHandler";
private static final Logger logger = Logger.getLogger(CrashHandler.class);
private static int crashCount = 0;
private static long firstCrashMillis = 0;
private final Class<?> mErrorReportClass;
@ -72,6 +75,7 @@ public class CrashHandler extends CrashReport.CrashHandleCallback implements Unc
String msg = errorType + ": " + errorMessage;
startErrorReportActivity(msg, errorStack);
} catch (Throwable throwable) {
logger.error("崩溃了:", throwable);
throwable.printStackTrace();
}
return super.onCrashHandleStart(crashType, errorType, errorMessage, errorStack);

View File

@ -6,14 +6,12 @@ import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import com.stardust.app.OnActivityResultDelegate;
import com.stardust.app.SimpleActivityLifecycleCallbacks;
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.core.console.GlobalConsole;
import com.stardust.autojs.core.activity.ActivityInfoProvider;
import com.stardust.autojs.core.console.ConsoleImpl;
import com.stardust.autojs.core.console.GlobalConsole;
import com.stardust.autojs.core.image.capture.ScreenCaptureRequestActivity;
import com.stardust.autojs.core.image.capture.ScreenCaptureRequester;
import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
@ -30,7 +28,6 @@ import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.util.ResourceMonitor;
import com.stardust.util.ScreenMetrics;
import com.stardust.util.UiHandler;
import com.stardust.autojs.core.activity.ActivityInfoProvider;
import com.stardust.view.accessibility.AccessibilityNotificationObserver;
import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.view.accessibility.LayoutInspector;
@ -40,6 +37,10 @@ import org.mozilla.javascript.WrappedException;
import java.io.File;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import de.mindpipe.android.logging.log4j.LogConfigurator;
/**
* Created by Stardust on 2017/11/29.
*/
@ -265,4 +266,14 @@ public abstract class AutoJs {
}
}
}
protected void setLogFilePath(String path) {
LogConfigurator logConfigurator = new LogConfigurator();
String pid = String.valueOf(android.os.Process.myPid());
logConfigurator.setFilePattern("%d - [%p]\t[" + pid + "] %c - %m%n");
logConfigurator.setFileName(path + "/.logs/autojs-log4j" + (BuildConfig.DEBUG ? "-debug" : "") + ".txt");
// 设置最大10MB
logConfigurator.setMaxFileSize(10 * 1024 * 1024);
logConfigurator.configure();
}
}

View File

@ -29,7 +29,7 @@ public class GlobalConsole extends ConsoleImpl {
String log = String.format(Locale.getDefault(), "%s/%s: %s",
DATE_FORMAT.format(new Date()), getLevelChar(level), charSequence.toString());
LOGGER.log(toLog4jLevel(level), log);
android.util.Log.d(LOG_tAG, log);
// android.util.Log.d(LOG_tAG, log);
super.println(level, log);
return log;
}