Android中的log4j支持

我试图将现有的SDK软件挂在Android设备上,并且所述SDK的一个依赖项是Apache log4j。 我能够将我的测试程序加载到android模拟器上但是当调用log4j对象“PropertySetter”时,程序失败并出现validationexception。 有没有办法改善这个问题?

    实际上使用slf4j对我来说是一个非常轻松的过程,这似乎是常见的情况,至少对于使用简单的log4jfunction的库来说。 您实际上不需要将slf4j替换为log4j,只需从http://www.slf4j.org/download.html向您的项目添加两个slf4j库:

    – 适用于Android的slf4j库(目前为slf4j-android-1.6.1-RC1.jar)
    – log4j over slf4j( http://www.slf4j.org/legacy.html#log4j-over-slf4j )桥。

    后者定义了典型实现使用的核心log4j类,并将它们绑定到slf4j Android实现。 一旦添加了库,代码就可以运行。

    我成功地使用Socket Appender和Log4j Chainsaw在android上运行log4j。 所有代码都位于此存储库中。 Slf4j也开始工作了。 请注意,您必须以编程方式配置它。 你不能使用.properties或.xml文件解析器不能在android上工作。 请享用。

    https://sourceforge.net/projects/log4j-android/

    有一个新项目,它可以在android上启用log4j。 也可以在slf4j上使用log4j。 它还为LogCat提供了一个附加function。 请参阅使用Log4J登录Android 。

    以下示例显示如何在Android中配置和使用log4j。

    在Android中配置log4j系统

    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(); } } 

    使用slf4j API使用log4j登录Android

     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"); } } 

    使用log4j API登录Android

     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"); } } 

    我建议尝试交换slf4j代替log4j。 它不是一个无痛的开关,但它可能比你拥有的更容易。 slf4j为几个记录器提供了一个通用的前端,包括log4j,还有一个slf4j-android包。

    不,Android的日志记录机制并不合适。 与log4j可以为您做的相比,这是非常不足的。

    log4j配置文件的解析器不是android safe.slf4j与log4j的android兼容性东西只是覆盖你将使用的log4j类并强制它们使用android logcat样式日志记录。 你仍然没有在android上获得log4j的完全灵活性。 我在我的项目https://sourceforge.net/projects/log4j-android/中将log4j移植到android上你所要做的就是将二进制目录中的两个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"); } 

    这将开始向您指定的远程主机发送消息。 然后,您可以使用Chainsaw http://logging.apache.org/log4j/docs/webstart/chainsaw/chainsawWebStart.jnlp查看此消息。 要进行电锯工作,请单击popup的对话框上的第二个checkbox,然后启动您的应用并显示新选项卡。 请注意您的防火墙可能阻止它…

    查看此项目以获得完整的实施: http : //code.google.com/p/log4j-android/