본문 바로가기
Programming/Android Java

앱에서 Logcat 보여주기

by 개Foot/Dog발?! 2014. 7. 26.
URL : https://code.google.com/p/weathermusic/source/browse/trunk/LogToaster/src/org/devtcg/tools/logcat/LogcatProcessor.java

        /* TODO: Support logcat filtering. */
        private ArrayList<String> LOGCAT_CMDS = new ArrayList<String>();
        private static final int BUFFER_SIZE = 1024;
.....
        public LogcatProcessor(String name) {
                super(name);
                LOGCAT_CMDS.add("logcat");
                LOGCAT_CMDS.add("-v");
                LOGCAT_CMDS.add("brief");
        }
.....
        public void run(){
                try     {
                        synchronized (LOGCAT_CMDS) {
                                String[] cmds = new String[LOGCAT_CMDS.size()];
                                LOGCAT_CMDS.toArray(cmds);
                                mLogcatProc = Runtime.getRuntime().exec(cmds);
                        }
                }
                catch (IOException e){
                        onError("Can't start " + LOGCAT_CMDS.get(0), e);으
                        return;
                }

                BufferedReader reader = null;

                try     {
                        reader = new BufferedReader(
                                        new InputStreamReader(mLogcatProc.getInputStream()), BUFFER_SIZE);
                        String line;
                        while ((line = reader.readLine()) != null){
                                onNewline(line);
                                mLines++;
                        }
                } catch (IOException e){
                        e.printStackTrace();
                        onError("Error reading from logcat process", e);
                } finally       {
                        if (reader != null)
                                try { reader.close(); } catch (IOException e) {}
                                stopCatter();
                }
        } 





* 참고로 Jellybean 인 4.2부터 root권한이 없으면, 자신의 앱과 관련된 프로세스외에 다른 로그를 볼 수가 없다.


* 또한 4.2이전에서는 "android.permission.READ_LOGS" 권한이 있어야 로그를 가져올 수 있어서, 이 권한을 AndroidManifest.xml에 기술하지 않으면 앱이 실행은 되어도 로그를 가져오지 못하였다.

하지만, 4.2부터 자신의 로그만 기본적으로 볼 수 있게 되면서 이 권한이 없어도 자신의 로그는 접근이 가능하다.


* android Logcat을 기록하는 /dev/log에 권한이 바뀐것으로 보인다.