How to constanly monitor LogCat file?

前端 未结 2 1341
独厮守ぢ
独厮守ぢ 2020-12-30 15:55

I need to somehow monitor the LogCat log, meaning that while my service is running I need to read the LogCat for new entries. At this moment I know only how to retrieve once

相关标签:
2条回答
  • 2020-12-30 16:32

    You can create a new thread to running the logcat(without the option -d) in the background.

    Note: Use the buffer events instead of the process ActivityManager, it is more accurate. "logcat -b events"

    0 讨论(0)
  • 2020-12-30 16:54

    This is how I did it, using Jiahao Liu's suggestion:

    ReadThread thread;
    
    public void startRecordingLogs()
    {
      if(thread == null || !thread.isAlive())
      {
        ReadThread thread = new ReadThread();
        thread.start();
      }
    }
    
    public String stopRecordingLogs()
    {
      String results = thread.stopLogging();
      return results;
    }
    
    private class ReadThread extends Thread{
    
      String results;
      Process process;
      Object lockObject = new Object();
    
      public void run(){
        synchronized(lockObject)
        {
          process = Runtime.getRuntime().exec("logcat -v time");        
    
          reader = new BufferedReader(new InputStreamReader (process.getInputStream()));
    
          String line;
          final StringBuilder log = new StringBuilder();
          String separator = System.getProperty("line.separator"); 
    
          while ((line = reader.readLine()) != null)
          {
            log.append(line);
            log.append(separator);
          }
        }
    
        results = log.toString();
      }
    
      public String stopLogging()
      {
        process.destroy();
        synchronized(lockObject)
        {
          return results;
        }
      }
    }
    
    0 讨论(0)
提交回复
热议问题