2012-10-24 6 views
3

로깅 지원을 위해이 라이브러리를 사용하고 싶지만 Android 및 SE는 자체 로깅 방법이 있습니다. SE에서는 System.out.println 메서드 또는 java.util.logging.Logger 클래스를 사용할 수 있습니다. Android는 android.util.Log을 사용하여 logcat에 로그온합니다. 처음에는 안드로이드가 사용 가능한지를 확인하기 위해 리플렉션을 사용했고 반사적으로 로그 메소드를 호출했습니다 Log.class; 그러나 그것은 좋은 생각이 아니었다.(Java SE/Android) 크로스 플랫폼 로깅

제 솔루션은 개발자가 내 라이브러리에서 로그를 처리하도록하는 것입니다. 이 그들이 설정 핸들러 인터페이스이어야하며 onLog 방법

public void onLog(int level, String tag, String msg); 

도서관 내 사용자 정의 로거 클래스의 핸들러에 onLog의 메소드를 호출을 가지고 있습니다. 개발자가 라이브러리 자체 대신 로그를 처리하도록하는 것이 좋은 생각입니까? 지금까지 최고의 솔루션이 될 것 같아요. 그리고 제가 잘 문서화한다면 그것은 문제가 될 수 없습니다.

답변

2

나는 로깅을 클라이언트에 위임해야하고 집에서 자라는 것에 동의합니다. 접근 방식은 실제로 합리적인 것입니다.

IMO의 경우 SLF4J 외관은 사용자 상황에 이상적입니다. 라이브러리에는 slf4j-api 항아리가 포함되며 SLF4J 로깅 문이 포함됩니다. 클라이언트가 로깅을 원한다면 로깅 백엔드 (및 선택적 구성 파일)를 응용 프로그램의 클래스 경로에 넣으면 로그 문을 캡처하고 볼 수 있습니다.

이 접근법의 장점은 클라이언트가 로깅을 얻는 데 필요한 제로 코딩을 통해 대부분의 제어를 허용한다는 것입니다. 클라이언트가 많은 백엔드 중에서 선택할 수 있도록합니다.

나는 logback을 J2SE 응용 프로그램의 백엔드로 사용하고 Android의 경우 logback-android을 사용할 것입니다.

+0

'slf4j' 로깅 라이브러리에 대해 설명해 주셔서 감사합니다. 전에 사용하지 않은 다른 의견을 편집 할 수 있었으면 좋겠습니다. 처음으로 하나를 사용하여 그것을 시도해 보겠습니다! –

1

당신은 그것은 당신이 안드로이드와 자바 일관된 로깅 메커니즘을 사용하는 데 도움

http://code.google.com/p/microlog4android/

microlog 시도 할 수 있습니다. slf4j를 사용하는 경우 마이크로 로그 (귀하의 안드로이드 프로젝트의 경우)와 log4j (자바 프로젝트의 경우) 모두 래퍼로 사용할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 필자는 많은 양의 데이터를 로깅하지 않기 때문에 별도의 로깅 라이브러리를 사용하지 않을 것이라고 생각합니다. 나는 그것을 테스트하고 잘 작동하기 때문에 나는 나의 해결책을 갈 것이라고 생각한다. 또한 사용자가 언급 한 것처럼 로깅 라이브러리에 대한 로그를 처리 할 수 ​​있습니다. –