Android中的LOG4J

Mid*_*son 10 java logging android log4j slf4j

我有很多文件的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 );
Run Code Online (Sandbox Code Playgroud)

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

Mid*_*son 16

通过使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

PropertyConfigurator.configure(MY_PROP_FILE);
logger = Logger.getLogger( MyClaZZ.class );
Run Code Online (Sandbox Code Playgroud)

附:

logger = ALogger.getLogger(MyClazz.class);
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用gradle而不是使用jar文件.您可以在应用程序的"app.gradle"中的依赖项部分添加两行`compile'de.mindpipe.android:android-logging-log4j:1.0.3'`和`compile'log4j:log4j:1.2.17'`. (12认同)