我試圖將現有的SDK硬塞到Android設備上,並且所述SDK的依賴項之一是Apache log4j。我能夠將我的測試程序加載到android模擬器上,但是當調用log4j對象「PropertySetter」時,程序因驗證異常而失敗。有沒有辦法改善這個問題?Android中的log4j支持
回答
我會建議您嘗試在SLF4J交換到位的log4j的。這不是一個無痛苦的轉變,但它可能比你擁有的更容易。 slf4j爲包括log4j在內的多種記錄器提供了一個通用的前端,並且有一個slf4j-android包。
不,Android的日誌記錄機制並不合適。與log4j可以爲您做的相比,它是非常不足的。
實際使用SLF4J變成了一個非常痛苦的過程對我來說,這似乎是常見的情況,至少在使用簡單的log4j的功能庫。你並不真的需要換SLF4J在log4j的,只能從http://www.slf4j.org/download.html添加兩個SLF4J庫到您的項目:
- 在SLF4J庫爲Android(目前SLF4J-的Android 1.6.1-RC1.jar)
- slf4j上的log4j(http://www.slf4j.org/legacy.html#log4j-over-slf4j)橋。
後者定義了典型的實施方式中使用,並將其綁定到SLF4J的Android實施核心的log4j類。一旦添加了庫,代碼就可以工作。
謝謝你對我來說......(測試) – Hurda 2011-03-31 15:49:05
你能詳細解釋一下如何將slf4j整合到你的android項目?我正在嘗試在Android項目中使用slf4j,並且我很難通過log4j.properties或log4j.xml文件進行配置。我甚至不確定我應該嘗試使用log4j.properties文件配置slf4j-for-android。 slf4j-for-android基本上是一個常規Android日誌的封裝(因此,我應該使用Android日誌配置而不是log4j的東西) – seanoshea 2010-11-05 22:39:52
slf4j-android沒有配置文件,您可以在啓動時配置日誌級別模擬器和當你通過logcat – kokosing 2010-11-18 15:09:21
我順利地拿到了log4j的上一個Socket追加程序和Log4j的電鋸Android平臺。所有代碼都位於此存儲庫中。 Slf4j建立並工作。請注意,您必須以編程方式進行配置。解析器不能在android上使用.properties或.xml文件。請享用。
電鋸和插座Appender似乎是驚人的:)非常感謝! – 2013-07-12 18:53:01
的log4j的配置文件分析器是不是log4j的安卓safe.slf4j的Android兼容性的事情只是將覆蓋你會使用log4j的類和迫使他們使用Android的logcat式日誌記錄。你仍然沒有在android上獲得log4j的全部靈活性。我在我的項目https://sourceforge.net/projects/log4j-android/的android上移植了log4j,你所要做的就是將二進制目錄中的兩個jar添加到你的classpath中。然後
static {
org.apache.log4j.Logger root = org.apache.log4j.Logger.getRootLogger();
final SocketAppender appender = new SocketAppender("192.168.1.4", 4445);
root.addAppender(appender);
}
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(MyClass.class);
static {
logger.info("Hello logger");
}
這將開始發送消息到您指定的遠程主機。然後,您可以使用鏈鋸http://logging.apache.org/log4j/docs/webstart/chainsaw/chainsawWebStart.jnlp查看此消息。要使鏈鋸工作,點擊彈出的對話框中的第二個複選框,點擊確定,啓動你的應用程序,並出現一個新標籤。要知道你的防火牆可能會阻止它......
只是好奇。什麼是「Android兼容性的東西」?看起來很容易,將您自己的屬性閱讀器放在200 LOC下。 – 2011-06-21 05:01:25
我指的是slf4j的android兼容性。他們實際上並沒有增加對log4j的支持,他們只是用自己的jar包繞過了log4j類。然後他們將輸出到log4j的所有日誌輸出到logcat。這對我來說太可怕了,因爲我討厭logcat它是一個毫無價值的日誌系統。 log4j-android項目只是一個基本上剝離了解析器類的android版本。然後slf4j橋接到精簡的log4j。 – 2011-09-08 20:18:39
有一個新的項目,這使得在Android上的log4j。也可以通過slf4j使用log4j。它還爲LogCat提供了一個appender。見Logging in Android using Log4J。
下面的示例演示如何配置和Android中使用log4j的。
配置log4j的系統中的Android
import org.apache.log4j.Level;
import android.os.Environment;
import de.mindpipe.android.logging.log4j.LogConfigurator;
/**
* Simply place a class like this in your Android applications classpath.
*/
public class ConfigureLog4J {
static {
final LogConfigurator logConfigurator = new LogConfigurator();
logConfigurator.setFileName(Environment.getExternalStorageDirectory() + "myapp.log");
logConfigurator.setRootLevel(Level.DEBUG);
// Set log level of a specific logger
logConfigurator.setLevel("org.apache", Level.ERROR);
logConfigurator.configure();
}
}
記錄在使用Android log4j的使用SLF4J API
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ExampleLog4JOverSLF4J {
private final Logger log = LoggerFactory.getLogger(ExampleLog4JOverSLF4J.class);
public void myMethod() {
log.info("This message should be seen in log file and logcat");
}
}
測井Android中使用的log4j API
import org.apache.log4j.Logger;
public class ExampleLog4J {
private final Logger log = Logger.getLogger(LogConfiguratorTest.class);
public void myMethod() {
log.info("This message should be seen in log file and logcat");
}
}
你剛剛從網站上覆制這個......這是什麼課程? LogConfiguratorTest.class和通過在應用程序類路徑中放置ConfigureLog4J意味着什麼,我的代碼中沒有任何地方可以引用它?請顯示一個完整的示例,而不是網站上的垃圾。 – JPM 2012-04-27 14:30:31
如何使用此配置自定義Appender? – 2013-07-12 18:14:45
@JPM他可能是指ExampleLog4J.class而不是LogConfiguratorTest.class – 2014-12-06 19:18:04
退房這個項目完全實現:http://code.google.com/p/log4j-android/
儘管這是一個很好的答案,但您是第三個用同一個項目回答的人。 – 2013-06-24 17:41:53
- 1. logback是否支持log4j appenders?
- 2. Log4j SyslogAppender是否支持MDC和NDC
- 3. log4j是否支持JSON格式?
- 4. Android中的IDN支持
- 5. Android中的OpenCL支持
- 6. android中的unicode支持ndk
- 7. Android支持庫中的CompletableFuture?
- 8. Android中的固件支持
- 9. OpenCV支持Android的硬件支持
- 10. 支持android
- 11. Android SSL支持
- 12. android支持unicode?
- 13. Android支持JDBC
- 14. Android中的Android USB配件支持4.42
- 15. Android支持MediaRouter殺死支持設計
- 16. SuperSlim不支持Android支持庫23.2.1
- 17. Android中不支持VOIP API?
- 18. 在Android Lollipop中支持Gmail的ActiveSync支持
- 19. Android支持包修訂版本12中的操作欄支持
- 20. 支持的iPhone,iPad,Android的
- 21. 的Android支持的設備
- 22. 支持多屏Android
- 23. WebView支持Android Wear
- 24. Android支持SNMP嗎?
- 25. Android MediaPlayer支持MJPEG
- 26. Android媒體支持
- 27. Android Studio - 支持包
- 28. Android 2.3 Unicode支持
- 29. Android多PDP支持
- 30. Android支持閃存
結帳這個簡單的包裝庫在android系統日誌[https://github.com/oronno/log4android](https://github.com/oronno/log4android ) – 2013-03-29 10:43:23
看看這個項目http://nikedlab.com/android-log-rolling-library.html – NikedLab 2014-02-23 12:47:45