[core] Force logging on boot (#996)

This commit is contained in:
vvb2060 2021-08-24 17:20:10 +08:00 committed by GitHub
parent 0e20e5cd7e
commit 24120e75ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 21 additions and 26 deletions

View File

@ -67,8 +67,6 @@ import java.util.List;
import java.util.Locale;
import rikka.core.os.FileUtils;
import rikka.core.res.ResourcesKt;
import rikka.insets.WindowInsetsHelperKt;
import rikka.recyclerview.RecyclerViewKt;
@SuppressLint("NotifyDataSetChanged")
@ -114,28 +112,23 @@ public class LogsFragment extends BaseFragment {
binding.recyclerView.getBorderViewDelegate().setBorderVisibilityChangedListener((top, oldTop, bottom, oldBottom) -> binding.appBar.setRaised(!top));
if (!ConfigManager.isVerboseLogEnabled()) {
WindowInsetsHelperKt.setInitialPadding(binding.recyclerView, 0, ResourcesKt.resolveDimensionPixelOffset(requireActivity().getTheme(), androidx.appcompat.R.attr.actionBarSize, 0), 0, 0);
binding.slidingTabs.setVisibility(View.GONE);
} else {
binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
verbose = tab.getPosition() == 1;
reloadErrorLog();
}
binding.slidingTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
verbose = tab.getPosition() == 1;
reloadErrorLog();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
});
adapter = new LogsAdapter();
RecyclerViewKt.fixEdgeEffect(binding.recyclerView, false, true);

View File

@ -57,7 +57,7 @@ private:
size_t verbose_file_part_ = 0;
size_t verbose_print_count_ = 0;
bool verbose_ = false;
bool verbose_ = true;
const std::string start_verbose_inst_ = "!!start_verbose!!";
const std::string stop_verbose_inst_ = "!!stop_verbose!!";
@ -124,8 +124,8 @@ void Logcat::ProcessBuffer(struct log_msg *buf) {
if (entry.pid == getpid() && tag == "LSPosedLogcat") [[unlikely]] {
if (std::string_view(entry.message).starts_with(start_verbose_inst_)) {
verbose_ = true;
RefreshFd(true);
id_ = std::string(entry.message, start_verbose_inst_.length(), std::string::npos);
verbose_print_count_ += PrintLogLine(entry, verbose_file_.get());
} else if (std::string_view(entry.message) == stop_verbose_inst_ + id_) {
verbose_ = false;
}
@ -135,6 +135,7 @@ void Logcat::ProcessBuffer(struct log_msg *buf) {
void Logcat::Run() {
constexpr size_t tail_after_crash = 10U;
size_t tail = 0;
RefreshFd(true);
RefreshFd(false);
while (true) {
std::unique_ptr<logger_list, decltype(&android_logger_list_free)> logger_list{

View File

@ -80,7 +80,6 @@ public class LogcatService implements Runnable {
id++;
}
@Nullable
public File getVerboseLog() {
return verboseLog;
}

View File

@ -82,9 +82,6 @@ public class ServiceManager {
logcatService = new LogcatService();
logcatService.start();
if (ConfigManager.getInstance().verboseLog()) {
logcatService.startVerbose();
}
Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
Looper.prepareMainLooper();
@ -124,6 +121,11 @@ public class ServiceManager {
}
});
// Force logging on boot, now let's see if we need to stop logging
if (!ConfigManager.getInstance().verboseLog()) {
logcatService.stopVerbose();
}
Looper.loop();
throw new RuntimeException("Main thread loop unexpectedly exited");
}