2010-06-17 32 views
6

Tôi có một thư viện khá lớn mà tôi đã phát triển đặc biệt để sử dụng trong Ứng dụng Android của mình. Tuy nhiên, logic nghiệp vụ tự nó không phụ thuộc vào Android. Để bảo tồn điều đó, tôi đã sử dụng Commons Logging trong suốt thư viện này và nó là các bài kiểm tra JUnit tương ứng (mà tôi chạy trong Eclipse).Không có đăng nhập Commons trong Android?

Tuy nhiên bây giờ tôi bắt đầu tích hợp nó vào một Hoạt động mà tôi khởi chạy trên Android, tôi không thể đăng nhập để hoạt động. Trong Eclipse/JUnit, tôi đã đơn giản kéo vào tệp jar của log4j cũng như tệp log4j.properties. Điều này dường như không hoạt động khi triển khai thiết bị. Sau khi đấu tranh với cố gắng để có được rằng để làm việc trong vài giờ, tôi đã bỏ và cố gắng thay thế tất cả các công cụ đăng nhập commons của tôi với android.util.Log. Bây giờ tôi có thể đăng nhập vào thiết bị .. nhưng tất cả các bài kiểm tra JUnit đều bị hỏng. Khi bất kỳ JUnit cố gắng đăng nhập bằng cách sử dụng android.util.Log, nó sẽ ném một RuntimeException 'Stub!'.

Tôi muốn hoàn nguyên về cách tiếp cận đăng nhập commons của mình .. nếu có ai đó có thể trợ giúp điều đó .. ngược lại .. tôi có thể làm gì để lấy các trường hợp thử nghiệm JUnit đang chạy bằng 'android.util.Log'?

Rất cám ơn trước .. Tôi đã dành hơn một vài giờ cho việc này và tôi muốn chuyển sang viết mã thực sự một lần nữa!

Trả lời

4

Tôi không tin rằng có một cổng log4j cho android atm. Tuy nhiên, android không có java.util.logging được xây dựng trong và commons đăng nhập có thể kết nối với điều đó thông qua Jdk14Logger. Nếu commons đăng nhập hoạt động trên android thì có thể bạn sẽ tốt để đi.

1

Bạn có thể xây dựng một Giao diện cho trình ghi nhật ký của riêng bạn, tùy thuộc vào nền tảng sẽ khởi tạo một đại biểu cho quá trình ghi nhật ký phổ biến trên nền tảng. Miễn là bạn đang làm việc và gỡ lỗi này là đủ, sau đó trong mã sản xuất trên thiết bị bạn chỉ có thể chèn một logger mà không có gì và bạn tiết kiệm tất cả thời gian bạn cần để lộn xộn phonelog.

5

Như Qberticus đề cập, việc ghi nhật ký sẽ hoạt động trong Android. Tôi vừa xác nhận điều này bằng cách thả thư viện commons-logging vào một dự án Android và các thông điệp ghi nhật ký ở cấp độ INFO. Commons-logging sẽ mặc định vào khung đăng nhập Jdk14, sau đó sẽ chuyển qua hệ thống con đăng nhập Android, với các kết quả có thể xem được trong logcat. Thẻ được đặt thành lớp có nhật ký được sử dụng: ví dụ: sử dụng nhật ký từ LogFactory.getLog(Foo.class) sẽ có thẻ "Foo".

1

Giải pháp của Paul không hiệu quả đối với tôi. Nó dẫn đến xung đột tại thời gian biên dịch bởi vì, khi nó xảy ra, jar đăng nhập commons đã được bao gồm trong SDK. Rắc rối của tôi là tôi không thể biên dịch chống lại nó.

Thêm:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar 

để ant.properties tôi đã làm các trick.

Các vấn đề liên quan