【问题标题】:Creating a log trace of the application life cycle创建应用程序生命周期的日志跟踪
【发布时间】:2013-05-21 23:06:22
【问题描述】:

我创建了一个广泛需要用户输入和交互的应用程序,尽管我已确保测试并捕获所有可能引发错误的情况,但我希望能够创建一种机制来跟踪错误以防万一我的应用程序在现场崩溃。

我希望能够记录从单击按钮到用户可能选择的任何内容或日志文件中页面之间的导航的整个流程,以便在我的应用程序崩溃时我能够研究跟踪稍后归档并确切知道错误发生的位置。

我对这种编程非常陌生,因此上面的任何指针都会非常有帮助!提前谢谢你:]

PS:我什至不确定我所指的内容是否会被正确地称为“日志跟踪”,因此欢迎进行任何编辑。 :)

编辑:我还希望能够保存生成的错误报告并将其发送到特定的 id(类似于“向 xyz 发送错误报告)。

更新:

 public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);


    try {
        File myFiles = new File("/sdcard/ScanApp");

        if(!myFiles.exists())
        {
            myFiles.mkdirs();
        }

        File myFile = new File("sdcard/ScanApp/log.txt");
        myFile.createNewFile();

        myFile.delete();

        myFile.createNewFile();

        String cmd = "logcat -d -v time -f "+myFile.getAbsolutePath()+ " -s ActivityManager:V";
        Runtime.getRuntime().exec(cmd);
        Logs.this.finish();
    } 
    catch (Exception e)
    {
        flag=1;
        error=e.getMessage();
    }

我在以前的应用程序中使用它来记录任何应用程序活动并制作一个文本文件并将其保存到 SD 卡中,但内容并不完全符合我的要求。解决方案是我在寻找这些方面的东西吗?

【问题讨论】:

  • 签出this link
  • 我正在寻找与您在链接中讨论的内容类似的内容,只是我希望能够记录导致异常的原因之前的堆栈跟踪,而不是仅记录异常。还有什么方法可以将它保存到 SD 卡中的文本文件或能够上传错误报告? (参考您在链接中提到的答案)
  • 你一定观察到很多人只是通过查看导致问题的堆栈跟踪来回答 SOF 中的问题,例如第 1 行中的 NumberFormatException。 XX 在 someMethod() 中。因此,您可以清楚地知道异常发生的确切位置,您不需要在异常发生之前的堆栈跟踪......
  • 此外,您可以将错误日志保存在您的 sqllite 数据库或任何文本文件中,然后在用户处于上传范围内而无需用户干预的情况下上传到您的服务器。
  • 我不太明白如何从我的应用程序中收集错误并将它们压缩到一个地方。

标签: android application-lifecycle


【解决方案1】:

在这里,检查link for reference

在这里你创建一个类说 ExceptionHandlerimplements java.lang.Thread.UncaughtExceptionHandler..

在本课程中,您将做一些拯救生命的事情,例如创建堆栈跟踪和准备上传错误报告等......

现在是重要的部分,即如何捕获该异常。 虽然很简单。在您覆盖的 onCreate 方法中调用 super 方法之后,在每个 Activity 中复制以下代码行。

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));

您的 Activity 可能看起来像这样……

public class ForceClose extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));

        setContentView(R.layout.main);
    }
}

希望这会有所帮助...

【讨论】:

    【解决方案2】:

    您需要查看Exception Handling。也就是说,当您的应用程序崩溃或发生任何其他应用程序级错误时,异常块中的代码将执行。因此,在那个地方,将该错误记录在一个文本文件中,从而解决您的“日志跟踪”问题。

    请参阅链接以获取精美示例。

    【讨论】:

    • 该链接有助于指出错误并显示它,但不幸的是,就我而言,我的用户对此一无所知。我只是希望能够记录错误并将它们放入一个文本文件中,该文件可以保存在 SD 卡中或向某个 id 发送错误报告。
    • @GarimaTiwari,查看此链接了解如何将错误记录到文本文件。 stackoverflow.com/questions/6757179/…
    • 更新我的问题,向您展示我已经尝试过的内容。
    • @GarimaTiwari,您需要将代码放在 catch 语句内的 try 块中。我的意思是,你有变量error=e.getMessage(); 对吗?在文本文件中记录 error 变量。
    • 我想要一个能够从应用程序中的任何地方收集错误并将它们收集到文本文件或其他内容中的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2010-09-17
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多