2 ssummeraw ssummeraw 于 2013.01.08 11:28 提问

为什么不能读出程序中的logcat 的输出?

我查的资料以下的代码可以从程序中读出logcat 的输出信息。然而,当我调用这个函数时,并没起作用,从system.out中除了输出"logcat called"以外,再没有输出别的任何信息。资料中说的这段代码没错,但是现在实现不了。

public void  Collector_logcat(){


    String stringbuffer="";
    String command="logcat -d";
    String command_c="logcat -c";
     System.out.println("logcat called\n"); 
    try{
        m_logcatprocess=Runtime.getRuntime().exec(command);
        m_logcat_inputreader=new InputStreamReader(m_logcatprocess.getInputStream());
        m_logcat_reader=new BufferedReader(m_logcat_inputreader);
      while((stringbuffer=m_logcat_reader.readLine())!=null){
          System.out.println(stringbuffer+"\n");  
      }

      Runtime.getRuntime().exec(command_c);

    }

        catch(Exception ex){
            System.out.println(ex.getMessage());
            System.out.println("error in Collector_logcat\n");
        }

     return ;

    } 

2个回答

yongyong_21
yongyong_21   2013.01.08 14:19
已采纳

试一下:
AndroidManifest.xml

<uses-permission android:name="android.permission.READ_LOGS" />

Get catlog:

try {  
    ArrayList<String> commandLine = new ArrayList<String>();  
commandLine.add( "logcat");  
    commandLine.add( "-d");  
    commandLine.add( "-v");  
    commandLine.add( "time");  
    commandLine.add( "-s");  
    commandLine.add( "tag:W");  
    Process process = Runtime.getRuntime().exec( commandLine.toArray( new String[commandLine.size()]));  
    BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream()), 1024);  
    String line = bufferedReader.readLine();  
    while ( line != null) {  
        log.append(line);  
        log.append("\n")  
    }  
} catch ( IOException e) {  
}

你将会得到以下的输出:
09-08 09:44:42.267 W/tag ( 754): message1
09-08 09:44:42.709 W/tag ( 754): message2
09-08 09:44:43.187 W/tag ( 754): message3
09-08 09:44:45.295 E/tag ( 754): message8

pinxue
pinxue   2013.01.08 12:02

在设备上?

在manifest里加 uses-permission android:name="android.permission.READ_LOGS" 试试

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
logcat没有输出的解决方法
连上真机,没有任何输出, 试了各种方法,最后才发现是因为后面的filter选的firebase 改成show only selected application就行了,真是自找麻烦
LOGCAT没有输出问题解决
1、检查DDMS的设置,如下图,是否选择了VERBOSE 2、如果是华为手机,在拨号界面输入“*#*#2846579#*#*”进入工程菜单,进入“后台设置-->2.LOG设置-->LOG开关”,选择“LOG打开”;返回上一个界面,点击“LOG级别设置”,选择“VREBOSE” 3、重启手机
解决Eclipse中Logcat无输出信息问题
JAVA和DDMS之间切换不是关闭DDMS,而是直接点击JAVA图标回到源码,点击DDMS回到DDMS,这种方式回到DDMS不会自动选中Device,LogCat无输出。这问题不是DDMS假死,也不是模拟器的问题,重启模拟器和重启eclipse都解决不了问题。LogCat无输出是因为DDMS中没有选中Device。 解决办法是进入Eclipse后,点击DDMS: 找到Devic
Android studio用真机调试时logcat一直输出日志?
当我们用android Studio真机调试时,一般会有很多系统日志不断输出,影响调试。      解决方法:右上角 no filters 选成 only selected application 如图:
android studio 使用mates真机进行调试,在logcat中无法打印出代码中有Log.d输出的log
今天虚拟机出了问题,没办法用华为mates真机调试,结果除了一个问题,让我郁闷了好久,开始怀疑自己的智商。 程序中的Log.d打印信息全然不出来,折腾了好久,在网友帮助下才知道,原来华为为了提高手机的性能,把Log信息给关闭了 解决办法: 1.进入手机拨号界面,输入“*#*#2846579#*#*”,弹出“工程菜单” 2.选择“后台设置” 3.选择“LOG设置” 4.将“LOG设置
解决Logcat输出不完整的问题
问题:Android Logcat输出有大约4k的限制,所以如果输出的字符串大于这个长度就会自动丢弃后面的,所以如果有一个很长的JSON的话就不能一次输出完整。问题分析及解决针对这个问题有2个解决方案1 将json拆分成多断,然后再手动复制到一起别人的实现链接:http://blog.csdn.net/qidizi/article/details/472918032 将json写到文件里只需要将Lo
Android Studio的logcat不输出信息
(1)今天调试代码时logcat只输出W/IInputConnectionWrapper: showStatusIcon on inactive InputConnection,然后按照网上解决logcat不输出信息的方法:在终端输入命令adb kill-server,adb start-server后logcat便什么信息也没有显示了,后来在http://bbs.csdn.net/topics/3
手机一连上Android Studio,Logcat不断输出信息
解决办法:无 0.0 正常现象 0.0 囧囧囧
Android Studio中 Logcat信息级别分类及设置步骤
Logcat信息分为好几个级别,分别是:Assert(断言)、Debug(调试)、Error(错误)、Info(信息)、Verbose(详细)、Warning(警告)。 1. [V]:详细(Verbose)信息,输出颜色为黑色 (我用白色) 2. [D]:调试(Debug)信息,输出颜色是蓝色 (我用蓝色) 3. [I]:通告(Info)信息,输出颜色为绿色 (我用绿
华为手机在开发Android调试时logcat不显示输出信息的解决办法
手机连接电脑RUN AS logcat 提示:Unable to open log device '/dev/log/main': No such file or directory 信息 本人华为C8812手机,获得ROOT权限(http://dl.vmall.com/c032h3j6dv 下载归一版,然后执行安装,按照提示操作即可) 华为C8812手机,获得root