我是 android 开发的新手。我想将日志写入 SD 卡中的一个文件。我如何使用 Log4j 来做到这一点。实现 Log4j 的所有步骤都是什么。我读了很多 atricles。但没有一个描述如何配置和实现它。谁能用简单的话解释一下如何在android中做到这一点。
问问题
10647 次
1 回答
11
你应该看看logback
(下一代log4j)。使用FileAppender
或RollingFileAppender
。
指示:
slf4j-api-1.6.6.jar
将和添加logback-android-1.0.6-2.jar
到您的类路径。在您的项目中创建文件
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 回答