【问题标题】:LOG4J in AndroidAndroid 中的 LOG4J
【发布时间】:2014-02-13 23:44:05
【问题描述】:

我有一个包含大量文件的 Java 项目,它使用的是 LOG4J。现在我正在尝试将其移植到 Android 平台。是否可以通过 LOG4J 函数调用原样重用代码?

目前的理解:

  1. 属性配置不起作用(bean 依赖项)
  2. 我尝试使用 LOG4J for Android 和 SL4J Lib。没有成功。

工作。但是没用

org.apache.log4j.Logger root = org.apache.log4j.Logger.getRootLogger();
final SocketAppender appender = new SocketAppender("192.168.123.123", 3333);
root.addAppender(appender);

// SLF4J - Not working
org.slf4j.Logger logger;
logger = LoggerFactory.getLogger(MyClass.class); 

// LOG4J for Android - Not working
ConfigureLog4J.configure();
logger = Logger.getLogger( MyClass.class );

我错过了什么吗?指向任何工作示例的指针?

【问题讨论】:

  • log4 android到底有什么问题?你有堆栈跟踪吗?

标签: java android logging log4j slf4j


【解决方案1】:

已通过使用android-logging-log4j.jar 解决。

这里是示例代码:

public class ALogger {
    public static org.apache.log4j.Logger getLogger(Class clazz) {
        final LogConfigurator logConfigurator = new LogConfigurator();
        logConfigurator.setFileName(Environment.getExternalStorageDirectory().toString() + File.separator + "log/file.log");
        logConfigurator.setRootLevel(Level.ALL);
        logConfigurator.setLevel("org.apache", Level.ALL);
        logConfigurator.setUseFileAppender(true);
        logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");
        logConfigurator.setMaxFileSize(1024 * 1024 * 5);
        logConfigurator.setImmediateFlush(true);
        logConfigurator.configure();
        Logger log = Logger.getLogger(clazz);
        return log;
    }
}

在您的代码中,替换以下行:

PropertyConfigurator.configure(MY_PROP_FILE);
logger = Logger.getLogger( MyClaZZ.class );

与:

logger = ALogger.getLogger(MyClazz.class);

【讨论】:

  • 你可以使用 gradle 代替使用 jar 文件。您可以在应用程序的 app.gradle 的依赖项部分添加两行 compile 'de.mindpipe.android:android-logging-log4j:1.0.3'compile 'log4j:log4j:1.2.17'
【解决方案2】:

我的回答,提出了一种更具前瞻性和横向思维的方法;-)。

我自己使用 android-logging-log4j 有一段时间了,但它在 dexing 时会导致大量警告(实际上看起来像错误)。

log4j jar 中还有很多不必要的东西,比如 Chainsaw 日志记录 UI(用 Swing 编写,因此在 Android 上无用)。

我已通过 https://github.com/tony19/logback-android 切换到 logback。 到目前为止,我很高兴。 构建时不再有大量垃圾邮件。

另外,看起来 log4j 1.x 不再开发了,看看https://github.com/apache/log4j/tree/trunk - 多年前的最后一次提交。

而logback似乎是继任者。

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2012-08-03
    • 2015-07-23
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多