1. ホーム
  2. java

[解決済み] AndroidにおけるLOG4J

2022-03-02 04:40:52

質問

LOG4Jを使用した、ファイル数の多いJavaプロジェクトがあります。今、私はそれをAndroidプラットフォームに移植しようとしています。LOG4Jのファンクションコールを使って、コードをそのまま再利用することは可能でしょうか?

現在の理解度

  1. プロパティ設定が機能しない(beansの依存性)
  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 );

何か見落としがあるのでしょうか?何か実用的な例へのポインタがありますか?

どのように解決するのですか?

を使用すると解決します。 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);