web-dev-qa-db-ja.com

LOG4J in Android

Java LOG4Jを使用している多くのファイルを含むプロジェクトがあります。現在、それをAndroidプラットフォームに移植しようとしています。コードを再利用することは可能ですか。現状のまま、LOG4J関数呼び出しで?

現在の理解:

  1. プロパティ構成が機能しない(Beanの依存関係)
  2. AndroidおよびSL4JLibに対してLOG4Jを試してみました。成功しませんでした。

ワーキング。しかし、役に立たない

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

私は何かが足りないのですか?実用的な例へのポインタ?

12
Midson

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

私の答えは、それはより将来性があり、水平思考のアプローチを提示します;-)。

私はしばらくの間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 -何年も前の最後のコミットを見てください。

そして、ログバックは後継者のようです。

0
KarolDepka