2

私はAndroid開発に不慣れです。SDカードの1つのファイルにログを書き込みたいです。Log4jを使用してこれを行うにはどうすればよいですか。Log4jを実装するためのすべての手順は何ですか。多くのatriclesを読みました。誰かがAndroidでこれを行う方法を簡単な言葉で説明できますか?

4

1 に答える 1

11

logback(次世代のlog4j)を見るべきです。FileAppenderまたはを使用しRollingFileAppenderます。

指示:

  1. クラスパスに と を追加しslf4j-api-1.6.6.jarます。logback-android-1.0.6-2.jar

  2. 次の構成を含むファイルをプロジェクトに作成しますassets/logback.xml(またはAndroidManifest.xml...see exampleを使用します)。

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>/sdcard/testFile.log</file>
    <append>true</append>
    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender>
        
  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

注: 指定されたパスは SD 上にあるため、必ずWRITE_EXTERNAL_STORAGE許可を使用してください。代わりに、既に書き込み権限を持っている別のパスを指定できます。

SLF4J ログ呼び出しを含む Java コードは、DEBUGレベル以上のすべてのイベントを/sdcard/testFile.log.

Java の例:

package com.example;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.example.R;
import android.app.Activity;
import android.os.Bundle;

public class HelloAndroidActivity extends Activity {
    static private final Logger LOG =
                       LoggerFactory.getLogger(HelloAndroidActivity.class);

    @Override
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       
       //
       // Based on the configuration above, these log statements
       // are written to /sdcard/testFile.log
       //
       LOG.info("Hello Android!");
       LOG.debug("reply: {}", Example.hello());
    }
}

class Example {
    static private final Logger LOG =
                     LoggerFactory.getLogger(Example.class);

    static public String hello() {
        LOG.trace("entered hello()");
        return "Hi there!";
    }
}
于 2012-08-12T23:15:07.740 に答える