Android中的Log4j实现

vmb*_*vmb 2 logging android log4j android-logcat

我是android开发的新手.我想将日志写入SD卡中的一个文件.如何使用Log4j执行此操作.所有这些都是实现Log4j的步骤.我读了很多atricles.But它们都没有描述如何配置和实现它.任何人都可以用简单的话解释如何在android中执行此操作.

ton*_*y19 10

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

说明:

  1. 添加slf4j-api-1.6.6.jarlogback-android-1.0.6-2.jar到类路径.

  2. assets/logback.xml在项目中创建文件(或使用AndroidManifest.xml...参见示例),包含以下配置:

<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>
Run Code Online (Sandbox Code Playgroud)

注意:由于指定的路径位于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!";
    }
}
Run Code Online (Sandbox Code Playgroud)