2016년 2월 13일 토요일

안드로이드 파일에 로깅하기

안드로이드에서 서비스, 브로드캐스트리시버 등을 활용한 프로그래밍을 할 때에는
정확한 동작을 확인하기 위해서 로깅을 할 필요가 있다.

뿐만 아니라, LogCat으로 보기에는 불편한 점도 많기 때문에 나만의 파일 로깅을 통해서
동작을 명확히 알고 싶은 경우가 많다.

그래서 몇 가지 알아보다가
microlog4android 를 사용해 봤다.
근데 앱을 시작할때마다 파일이 새롭게 작성이 되어서;;;분명히 내가 잘못 설정한 거 같긴
한데 원인 파악하기 귀찮아서 다른 걸로 해봤다.

android log4j 가 내가 원하는 데로 동작함을 확인할 수 있었다.

1)  android studio gradle에서 dependency 추가하기

compile 'de.mindpipe.android:android-logging-log4j:1.0.2@jar'



public class ConfigureLog4J {
    public static void configure() {
        final LogConfigurator logConfigurator = new LogConfigurator();

        logConfigurator.setFileName(Environment.getExternalStorageDirectory() + File.separator + "logfile.log");
        logConfigurator.setRootLevel(Level.DEBUG);
        // Set log level of a specific logger
        logConfigurator.setLevel("org.apache", Level.ERROR);
        logConfigurator.configure();
    }
}

ConfigureLog4J 라는 클래스 생성하고 로깅 하기 원하는 클래스에서



 private static final Logger logger = Logger.getLogger(MainActivity.class);

 static {
    ConfigureLog4J.configure();
 }


와 같이 전역으로 선언하고

logger.info(" 메시지 \n");

와 같이 사용하면 된다.

추가적으로 생성한 로깅 파일을 읽어들이는 코드.



public class LogWatchActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_log_watch);

        File sdcard = Environment.getExternalStorageDirectory();
        File file = new File(scared,"logfile.log");

        StringBuilder text = new StringBuilder();

        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;

            while ((line = br.readLine()) != null) {
                text.append(line);
                text.append('\n\n\n');
            }
            br.close();
        }
        catch (IOException e) {
        }

        EditText et = (EditText)findViewById(R.id.et);
        et.setText(text.toString());
    }
}



EditText 하나 두고 로깅한 파일을 출력해주고 있다.


댓글 1개:

  1. 나는 점점 더 많은 사실 정보를 얻기에 너무 많은 새로운 일이 있기 때문에 독서에 대한 내 기본 블로그로 블로그를 가지고 가야한다.
    알람 시계 안드로이드 2016

    답글삭제