Android Studio Logcat 사용하기

Posted by ITPangPang
2016. 4. 6. 01:02 안드로이드(android)/알아두면 좋은것


안드로이드 스튜디오 로그캣 사용하기

 

LogCat


ㆍ사용하기 전에 사전적 의미를 생각해보면 Log는 흔적,

  기록 이런 뜻이고 Cat은 고양이..? 또는 잡는느낌? 

  이정도인것 같습니다..

 

  프로그래밍에서 생각해보면 log는 정보를 시간에 따라 

  남기는 것이고 cat은 cmd명령어로 사용했을때 뭔가를 

  나타내는 또는 출력해주는 느낌이므로 아마도 LogCat은 

  흐름에 따른 흔적을 출력해주는 것 같습니다.

 

  개발에는 디버깅(오류를 찾아 수정)이 중요 하므로 로그캣은 

  필수적으로 사용해야 합니다.

 

  안드로이드 개발을 이클립스에서 하다가 안드로이드 스튜디오로 

  바꿔서 하려니 처음에는 로그캣 찾는것도 힘들었습니다.. 

  막 찾다보니 결국 찾았지만..


그럼 바로 사용해보도록 하겠습니다.


안드로이드 스튜디오를 열어서 아래 하단에 보시면 


6:Android라는 것이 있습니다 이걸 눌러주시면


바로 위쪽에 logcat이라고 보실수 있습니다.



혹시나 안보이신다면 좌측 하단에 네모난 버튼이 있습니다.

(도구창의 퀵 액세스 메뉴버튼이라 합니다)


여기에 마우스를 가져다 대시면 위에 그림처럼 목록이 쫙 뜨는데


거기서 Android를 선택하시면 됩니다.


그 다음 우측에 보시면 Show only selected application이라 써있는 상자가 있습니다.


여기서 옆에 역삼각형?을 누르시면 위 그림처럼 나오는데 


Edit Filiter Configuration을 클릭해줍니다.


Configuration이 환경설정이란 뜻이니 뭐 편집 필터 환경설정 정도란 얘기같네요.



클릭을 하면 위와 같은 창이 뜨는데 각각 무엇을 의미하는지 알아보겠습니다.


① Filter Name : 필터네임은 디버깅 과정에서 개발자가 알아보기 쉽게 설정합니다.

   음 예를들어 int i, int j가 있는데 각각 메서드마다 변화하는 값을 알아볼때

   필터를 2개 만들어서 Value-i, Value-j 이렇게 만들어서 구분하면 되겠죠?

 

② Log Tag(regex) : 실제로 코드상에서 들어가는 태그입니다.

    예를들어 Log Tag를 hoit으로 했다하면, 소스상에서 Log.d("hoit","check");

    이렇게 사용하면 됩니다. 좀 더 자세한건 사용하면서 보겠습니다.

 

③ Log Message(regex) : 여기는 보고싶은 메시지만 로그캣에 출력되도록 설정합니다.

    만약 Message 설정 없이 로그캣 출력이 아래와 같이 나왔다면

    hoit: i =1

    hoit: j =1

    hoit: i =2

    hoit: j =1

    이라고 나왔을때 j값만 보고 싶다면 Log Message: 에 j라고 입력하면 로그캣 출력은

    hoit: j =1

    hoit: j =1

    이렇게만 보이게 됩니다. 이것도 사용하면서 자세히 보겠습니다.

④ Package Name : 여긴 따로 설명안해도 되는 패키지명 입력입니다.

⑤ PID : 여기는 프로세스아이디인데 skip하셔도 됩니다.

⑥ Log Level : 음.. 로그의 중요도 레벨입니다.

    종류는 Verbose, Info, Debug,  Warn, Error가 있습니다

    Verbose가 가장 중요도가 낮고 Error가 가장 높습니다.

    개인차이겠지만 저는 거의 d를 씁니다.

 

그럼 이제 직접 간단한 예제를 통해서 사용해보겠습니다


- 버튼 2개와 텍스트뷰 1개를 배치해서 숫자를 증감 시키는 프로그램입니다.

public class MainActivity extends AppCompatActivity
{
    Button btn1, btn2;
    TextView tv;
    int i = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1 = (Button)findViewById(R.id.btn1);
        btn2 = (Button)findViewById(R.id.btn2);
        tv = (TextView)findViewById(R.id.tv);

        btn1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                addValue();
            }
        });

        btn2.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                minusValue();
            }
        });
    }

    public void addValue()
    {
        i++;
        tv.setText(""+i);
    }

    public void minusValue()
    {
        i--;
        tv.setText(""+i);
    }
}



로그를 추가시켜서 로그캣에서 i의 값을 찍어보겠습니다


2개를 만들어서 나머지는 다 똑같이 설정하고

value-i에만 Log Message에 i를 입력하였습니다.


 

- 이제 소스에 로그를 추가 시켜보겠습니다.

public class MainActivity extends AppCompatActivity
{
    Button btn1, btn2;
    TextView tv;
    int i = 0;
    static final String TAG = "hoit";
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "시작");
        btn1 = (Button)findViewById(R.id.btn1);
        btn2 = (Button)findViewById(R.id.btn2);
        tv = (TextView)findViewById(R.id.tv);

        btn1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                addValue();
            }
        });

        btn2.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                minusValue();
            }
        });
    }

    public void addValue()
    {
        Log.d(TAG,"+ 버튼 눌렀음");
        i++;
        Log.d(TAG,"i값 = "+i);
        tv.setText(""+i);
    }

    public void minusValue()
    {
        Log.d(TAG,"- 버튼 눌렀음");
        i--;
        Log.d(TAG,"i값 = "+i);
        tv.setText(""+i);
    }
}

이제 프로그램을 실행시켜서 +와 -버튼을 몇번 

누르면서 로그캣의 상태를 확인해보겠습니다.


total필터에서는 소스에서 찍은 그대로 전부 다 출력이 됩니다.

 

그렇다면 Message에 i를 추가시킨 value-i를 보겠습니다. 



결과를 보니 i값이 들어간 로그만 보여줍니다.

 

이상으로 로그캣 사용방법을 간단하게 알아봤습니다.

완전 기초적인 사용법만 써놨기에 로그캣 활용이

더 궁금하신분들은 검색해보시면 다양하고 효율적으로 사용하실수 있을겁니다.