2

我是 android 开发的新手。我想将日志写入 SD 卡中的一个文件。我如何使用 Log4j 来做到这一点。实现 Log4j 的所有步骤都是什么。我读了很多 atricles。但没有一个描述如何配置和实现它。谁能用简单的话解释一下如何在android中做到这一点。

4

1 回答 1

11

你应该看看logback(下一代log4j)。使用FileAppenderRollingFileAppender

指示:

  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权限。您可以改为指定您已经具有写入权限的其他路径。

您的 Java 代码(包含 SLF4J 日志记录调用)现在将级别或以上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 回答