有没有办法从Android手机中检索日志消息.
我正在构建一个使用我的HTC Hero的GPS的应用程序.我可以从eclipse运行和调试应用程序,但这不是一个很好的GPS用例,坐在我的办公桌前.
当我四处走动时,当我开启应用程序时,我会出现间歇性异常.无论如何,我可以将这些例外输出到SD卡上的文本文件或输出Log.x("")到文本文件的调用,以便我可以看到异常是什么.
谢谢
编辑:解决方案
这是我最终使用的代码......
Thread.currentThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
PrintWriter pw;
try {
pw = new PrintWriter(
new FileWriter(Environment.getExternalStorageDirectory()+"/rt.log", true));
ex.printStackTrace(pw);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
});
Run Code Online (Sandbox Code Playgroud)
我不得不包裹这条线
pw = new PrintWriter(new FileWriter(Environment.getExternalStorageDirectory()+"/rt.log", true));
Run Code Online (Sandbox Code Playgroud)
在try/catch中,因为Eclipse不会让我编译应用程序.它不停地说
Run Code Online (Sandbox Code Playgroud)Unhandled exception type IOException 1 quick fix Sorround with try/catch
所以我做了,这一切都很好,但我确实让我想知道Eclipse是关于什么...
Dav*_*ebb 18
您可以使用Thread.setUncaughtExceptionHandler()捕获异常.
写入SD卡就像检索卡的目录并在Environment.getExternalStorageDirectory()那里创建文件一样简单.
File f = new File(Environment.getExternalStorageDirectory(),filename);
Run Code Online (Sandbox Code Playgroud)
您需要向应用程序提供正确的权限才能写入SD卡,方法是将其添加到您的Manifest中:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
小智 6
Log4j或slf4j也可以与logcat一起用作Android中的日志框架.查看项目android-logging-log4j.配置日志记录到(旋转)文件非常简单.
static {
final LogConfigurator logConfigurator = new LogConfigurator();
logConfigurator.setFileName(Environment.getExternalStorageDirectory() + "myapp.log");
logConfigurator.setRootLevel(Level.DEBUG);
// Set log level of a specific logger
logConfigurator.setLevel("org.apache", Level.ERROR);
logConfigurator.configure();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29515 次 |
| 最近记录: |