如何持续监控LogCat文件?

2023-11-30

我需要以某种方式监视 LogCat 日志,这意味着当我的服务运行时,我需要读取 LogCat 中的新条目。 目前我只知道如何检索一次日志:

Process mLogcatProc = null;
    BufferedReader reader = null;
    try
    {
            mLogcatProc = Runtime.getRuntime().exec(new String[]
                   {"logcat", "-d", "ActivityManager:I *:S" });        

            reader = new BufferedReader(new InputStreamReader
    (mLogcatProc.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);
            }

如果我删除 -d 选项,它将不会退出,但也不会工作。 那么如何修改下面的代码以便不断从 LogCat 读取新条目呢?


我是按照刘嘉豪的建议这样做的:

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;
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何持续监控LogCat文件? 的相关文章

随机推荐

  • 使用 opengles、android 播放视频

    如何在android中使用opengl es播放视频 你的问题有点模糊 如果您只想在 GL 表面上播放视频 这是可能的 请参阅Media Player示例代码戴夫在他的样本中提到的 您所要做的就是更换SurfaceView with a G
  • Jquery .autocomplete 不起作用

    我有一个 jquery 自动完成功能 它没有做任何事情 我已经使用了来自的代码here 它在他们的示例中有效 有一些变化 首先 数组是从 viewModelList 创建的并且它可以工作 这是其中的一小部分 var suburbs id 1
  • 如何检测从不同位置多次登录 Django Web 应用程序?

    我想一次只允许一个经过身份验证的会话在我的 Django 应用程序中进行单独登录 因此 如果用户在给定的 IP 地址上登录网页 并且使用相同的用户凭据从不同的 IP 地址登录 我想做一些事情 注销第一个用户或拒绝第二个用户的访问 不确定是否
  • swift alamofire 返回值为空

    你好我有以下方法 func getAlamoPlayers gt Player Get TeamID let prefs NSUserDefaults NSUserDefaults standardUserDefaults var Team
  • 如何回滚文件 git vscode 以前的历史记录?

    如何在vscode中重新加载git源代码管理中文件的先前历史记录 vs code 只提供恢复最后一次提交的功能 我可以在 vscode 中看到带有 Git History 扩展名的文件的所有历史记录 但是有没有办法回滚到文件的任何历史记录
  • 如何在 Java 中将示例 JSON 转换为 JSON 模式

    我想将 json 文档转换为 json 模式 我用谷歌搜索了它 但没有根据我的要求得到确切的想法 这是 JSON empId 1001 firstName jonh lastName Springer title Engineer addr
  • gdb 调试器中未找到调试符号

    当我运行复杂的 C 程序模拟器 c 其中包含 gdb 中的许多 C 文件 时 它会给出错误 找不到调试符号 我正在使用 gcc g Simulator c 来编译这个程序 任何人都可以告诉我为什么会出现这个错误 您可能需要编译each c
  • Vue实例之间如何通信

    如果我定义一个组件 例如 Vue component hello name hello data gt return color black template div div TEST div div
  • 通过 NuGet 提供 App.config 文件

    我的 nupkg 中有一些信息 我想将其包含在消费者的应用程序中 使用 nupkg 时直接包含部分 app config 的最佳方法是什么 我目前已经这样做了 mypackage nupkg content 应用程序配置 但这使得它想要覆盖
  • 在 Enzyme / React 测试中什么时候应该使用 render 和shallow?

    在发布这个问题之前 我尝试在 sqa stackexchange 中搜索 但我在那里没有找到关于浅层和渲染的帖子 所以我希望有人可以在这里帮助我 在测试 React 组件时我什么时候应该使用shallow 和 render 根据airbnb
  • 当用户名错误时,为什么 GetErrorMessage 返回“密码错误”?

    获取错误消息 来自 CInternetException 给了我以下内容 FTP 服务器名称不正确 错误 无法解析服务器名称或地址 密码错误 错误 密码不被允许 用户名不正确 错误 密码不被允许 try pConnect sess gt G
  • 有效地将命名列表转换为 data.frame [重复]

    这个问题在这里已经有答案了 我正在寻找一种有效的方法来进行以下转换 输入示例 ob lt list a 2 b 3 预期输出 key value 1 a 2 2 b 3 当前 详细 解决方案 data frame key names ob
  • JavaScript 中 const 和 const {} 有什么区别?

    当我学习时Electron 我发现了两种获取 BrowserWindow 对象的方法 const BrowserWindow require electron and const electron require electron cons
  • 文件打开、文件读取、文件写入

    如何正确使用文件读取 文件写入 缓冲区 或 TFileStream 我需要将整个文本文件读取到字符串中 然后将字符串写回到该文件中 用新字符串替换它 TStringList如果您需要按行处理文件 这就是您想要的 如果您只想将其视为单个字符串
  • 为什么 termcolor 在 Windows 控制台中输出控制字符而不是彩色文本?

    我刚刚安装术语颜色适用于 Windows 上的 Python 2 7 当我尝试打印彩色文本时 我得到的是颜色代码 from termcolor import colored print colored Text text text red
  • 刷新页面上的Javascript而不刷新HTML

    关于我的问题的一些背景信息 我正在更新当前显示 HTML 的 div 中的 MathML 当我第一次加载页面时 如果运行 MathJax 脚本并完美显示所有 MathML 当我单击 预览更改 一个按钮 该按钮获取文本区域中所做的当前更改并将
  • Flutter的全球主流飞镖未来如何等待?

    我使用 dart meteor 包 并且必须在全球范围内发起main dart 像这样 import package flutter material dart import package dart meteor dart meteor
  • PHP include() 在 doctype 之前,导致空格

    我的网站存在空白问题 我在文档类型之前包含了一些文件 这会导致输出空白 经过搜索我找到了这个解决方案 文档类型前的空格问题 然而去掉之后 gt 我仍然遇到问题 下面是代码 Here is session php
  • 正则表达式匹配科学记数法

    我正在尝试匹配科学记数法中的数字 正则表达式来自here scinot re compile 0 1 9 d d eE d re findall scinot x 1e4 1e4 re findall scinot x c1e4 1e4 我
  • 如何持续监控LogCat文件?

    我需要以某种方式监视 LogCat 日志 这意味着当我的服务运行时 我需要读取 LogCat 中的新条目 目前我只知道如何检索一次日志 Process mLogcatProc null BufferedReader reader null