Android中的LOG4J

fzwojiic  于 2022-11-06  发布在  Android
关注(0)|答案(3)|浏览(260)

我有一个Java项目,里面有很多文件,使用的是LOG4J。现在我正在尝试将它移植到Android平台上。有没有可能通过LOG4J函数调用来重用代码?
当前理解:
1.属性配置不起作用(Bean依赖关系)
1.我试过用安卓系统的LOG4J和SL4J库,没有成功。
工作。但是没有用

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

我是不是漏掉了什么?有没有什么有用的例子?

yacmzcpb

yacmzcpb1#

通过使用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);
czfnxgou

czfnxgou2#

我的回答是,这是一种更具未来性和横向思维的方法;- ).
我自己也使用android-logging-log4j有一段时间了,但是它在德兴的时候引起了大量的警告(实际上看起来像是错误)。
log4j jar中也有很多不必要的东西,比如Chainsaw日志记录UI(用Swing编写,因此在Android上无用)。
我已经通过https://github.com/tony19/logback-android切换到了logback。到目前为止我很满意。在构建的时候没有更多的垃圾邮件。
另外,看起来log4j 1.x已经不再开发了,看看https://github.com/apache/log4j/tree/trunk-最后一次提交是在很多年前。
而logback似乎是继任者。

xghobddn

xghobddn3#

看一下android-log4j2。该项目提供了运行时依赖jar,它不需要您更改任何log4j依赖代码,并使所有日志适应Android日志记录。没有API需要学习。
它是log4j-core的直接替代品,因此只需确保将其更换为
android-log4j 2在您的Android项目中。

相关问题