android 错误日志打印到本地

Android应用程序异常上报及错误日志记录 ACRA提供了一种简单的方式来捕获应用程序的崩溃,并将错误信息发送到指定的目标。如果没有自定义的Application类,可以创建一个继承自Application的类,并在AndroidManifest.xml文件中进行注册。通过实现异常上报和错误日志记录的功能,开发者可以更好地了解和修复应用程序中的问题。错误日志记录可以帮助开发者追踪应用程序的运行情况,了解用户在使用过程中遇到的问题。注解来指定ACRA的一些基本配置,例如使用项目的BuildConfig类,并使用。方法,我们可以将错误信息记录到日志中。 阅读详情

开发中测试遇到的bug到打印到本地,方便我们开发调试修改

1、创建MyCrashHandler类

package com.example.yu.myapplication;

import android.content.Context;
import android.os.Environment;
import android.util.Log;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.Thread.UncaughtExceptionHandler;
import java.util.Date;


/**
 * 全局捕获导常,保存到本地错误日志。日志
 * 路径位于sdcard/错误日志Log/myErrorLog下。
 */
public class MyCrashHandler implements UncaughtExceptionHandler {


    private static MyCrashHandler instance;

    public static MyCrashHandler getInstance() {
        if (instance == null) {
            instance = new MyCrashHandler();
        }
        return instance;
    }

    public void init(Context ctx) {
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    /**
     * 核心方法,当程序crash 会回调此方法, Throwable中存放这错误日志
     */
    @Override
    public void uncaughtException(Thread arg0, Throwable arg1) {

        String logPath;
        if (Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            logPath = Environment.getExternalStorageDirectory()
                    .getAbsolutePath()
                    + File.separator
                    + File.separator
                    + "错误日志Log";

            File file = new File(logPath);
            if (!file.exists()) {
                file.mkdirs();
            }
            try {
                FileWriter fw = new FileWriter(logPath + File.separator
                        + "myErrorlog.log", true);
                fw.write(new Date() + "错误原因:\n");
                // 错误信息
                // 这里还可以加上当前的系统版本,机型型号 等等信息
                StackTraceElement[] stackTrace = arg1.getStackTrace();
                fw.write(arg1.getMessage() + "\n");
                for (int i = 0; i < stackTrace.length; i++) {
                    fw.write("file:" + stackTrace[i].getFileName() + " class:"
                            + stackTrace[i].getClassName() + " method:"
                            + stackTrace[i].getMethodName() + " line:"
                            + stackTrace[i].getLineNumber() + "\n");
                }
                fw.write("\n");
                fw.close();
                // 上传错误信息到服务器
                // uploadToServer();
            } catch (IOException e) {
                Log.e("crash handler", "load file failed...", e.getCause());
            }
        }
        arg1.printStackTrace();
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

2、在Application中进行初始化

package com.example.yu.myapplication;

import android.app.Application;

/**
 * Created by yu on 2016/6/8.
 */
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //打开错误日志,保存到sd卡
        MyCrashHandler myCrashHandler = MyCrashHandler.getInstance();
        myCrashHandler.init(getApplicationContext());

    }
}

3、修改mainfests,添加权限,修改application节点

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yu.myapplication">
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
保存 log 到手机内存的代码 1.先加上此类 [java]viewplaincopy 1packagecom.leader.hsj.utils; 2 3importjava.io.BufferedReader; 4importjava.io.File; 5importjava.io.FileNotFoundException; 6importjava.io. 阅读详情

相关推荐

python爬虫抖音 个人资料 仅供学习参考 切勿用于商业

本文仅供学习参考 切勿用于商业 本次爬取使用fiddler+模拟器(下载抖音APP)+pycharm 1. 下载最新版本的fiddler(自行百度下载),以及相关配置 1.1.依次点击,菜单栏-Tools-Options-HTTPS,如图1红框打钩,HTTPS旁边Connections配置,如图2红框打钩 1.2.再次点击HTTPS栏,点击Actions选择第二个…to ...

dbva7063的博客 1491

[Android]使用Exception()打印日志堆栈

使用Exception()打印日志堆栈 有些一个函数被多个地方调用,想查看运行时具体的调用关系,可以使用 new Exception(“xxx”) 查看,函数的调用关系。 即new Exception(“xxx”) 可以查看代码的逻辑堆栈,方便调试BUG和查看逻辑关系。 new Exception(“xxx”) Slog.v("debug_Exception", "Exception log:" + new Exception("fadi_debug")); Log.d("debug_Exception",

苏法迪的专栏 2624

linux和mac安装+配置circos(

一定要下载完这两个包,GD才会work,要不然会报错,且-modules显示也是fail。官网的教程说的很明白,但是很多包都已经过时了需要在网上找。一般来讲,所有包的安装都不会太困难,除了GD。1.是因为官网给的链接下出来的tgz无法解压。2.我的电脑安装后GD照样是fail的。,进入这个地址下一个.tgz。第二点的原因在于,官网的情况。,进入这个地址,按部就班。GD安装困难有以下几点。搞了一天终于配置成功。

xiufan1的博客 549

Android 捕获异常,并打印日志文件到本地

开发过程中或多或少肯定会出现异常问题,有的可以百分百复现,可以很快的定位到问题,但有的只是偶尔出现一次,定位问题会困难很多(1.有些是会造成崩溃的异常。2.有的是不会造成崩溃的异常),不论是会不会造成崩溃异常都可以使用CrashHandlerManager和ExceptionManager解决一下这样的情况。 1.先申请权限,关于如何申请权限请查看RxPermissions的使用(简单实用)_ErwinNakajima的博客-优快云博客 2.造成App崩潰的異常管理類。 pac......

UrasakiNakajima的博客 2876

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 434

【算法设计与分析】期末复习题(超详细)

刚刚整理了一下电脑的文件,发现了这份上学期的算法设计与分析期末复习题,有需要的文后自取。

a1234567822的博客 6611

try catch捕获异常并打印报错行号等信息

java捕获异常,并打印报错行号信息

ZhaZha__Hui的博客 1万+

ArcGIS供地图斑图形及属性入库操作(附练习数据)

已知数据: 供地图斑位置图。 供地图斑表格 成果要求:将供地图斑导入mdb数据库并将供地图斑表格的属性进行挂接。 接下来我们开始操作: 1、 打开arcmap,在目录内连接的文件夹内找到供地图斑位置图。图片 2、 将annotation和polygon添加到arcmap图片 3、 右击文件所在文件夹新建mdb数据库图片 4、 右击数据库新建要素数据集。(要素数据集非常重要,稍后所有操作都在数据集内进行)选择图斑投影方式及代号。图片 5、 右击要素数据集—导入(将图层内的数据导入数据库)图片 6、 数据导入.

qq_43173805的博客 8132

android打开保存图片格式,android – 保存后未显示的配置文件图像(它...

我正在尝试上传用户个人资料图像并存储在firebase中.我的图像成功存储在firebase存储和用户数据库中.当我上传它在屏幕上显示的图像时,但是一旦我保存并重新打开设置以查看配置文件图像,它就不显示,它只显示空白的白色屏幕(但重新打开时的名称和手机显示,只有图像不显示节目)我附加了从db获取值并在ui中显示的代码,并添加了saveUserInformation(),当用户单击保存图像按钮时,该...

weixin_34145350的博客 429

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

【OAG vs RAG】RAG的“语义崩溃“:为什么你的知识库越大,AI越笨?_语义检索oag-优快云博客

19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程)·49.9 元(AI 时代成长方法论)。单篇不过瘾?订阅解锁全量源码、实战与答疑;文末附资料包领取方式 ↓图1:RAG语义崩溃概念图。

求知若渴、虚心若愚 72

安卓错误日志捕捉

最近整理了一下错误日志捕捉的代码,这个虽然网上很多,但是加了点自己的想法吧!下面时代码: import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Build; import java.io.File; import java.io.FileInputStream; import java.io.File

silencefly的博客 646

JeecgBoot passwordChange 任意用户密码重置漏洞复现

​JeecgBoot 框架passwordChange接口存在任意用户密码重置漏洞,未经身份验证的远程攻击者可以利用此漏洞重置管理员账户密码,从而接管系统后台,造成信息泄露,导致系统处于极不安全的状态。

0xSec 2641

在Android NDK下打印log

在Android Studio NDK中打印log 示例 // 导入必须的android/log.h头文件 #include &lt;android/log.h&gt; // 可选。定义方便使用的宏 #definde LOGE(...) __android_log_print(ANDROID_LOG_ERROR, "Tag", __VA_ARGS__) int main(int argc, c...

chice的博客 556

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android错误日子,Android 捕获错误日志的方法

前提今天在群里聊天的时候有群友问如何捕获错误日志,我说可以自己写,也可以用第三方的比如腾讯的bugly,友盟的错误统计等等,但是那些是别人的东西,作为一个程序员当然是要知其然,并且要知其所以然。因此今天就在此写一下关于捕获错误日志的文章,希望可以给新手指导,大佬请绕行。首先要捕获错误日志当然是调用系统的了,这样最方便,也是大家常用的了,废话不多说,直接上图,no pic say a xx.错误日志...

weixin_39643336的博客 356

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android崩溃日志保存在本地

遇到的坑: 1.这个东西只能保存崩溃的错误日志,有点局限性 2.文件权限申请,文件权限申请,文件权限申请,重要的事情讲三遍, 3.这个生成之后的文件,一定要用手机去看,千万不要用电脑,别问题为什么,因为电脑看的那个文件夹没刷新,不显示,还有我们存储路径的wangrusheg 这个东西是可变化的,是你的项目名称,千万不要傻愣愣的一直去找这个文件夹 这个是项目名称,项目名称,项目名称!!!!切记...

cf8833的博客 2863

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android 使用UncaughtExceptionHandler定制自己的错误日志系统

MobclickAgent.reportError(BaseApplication.getInstance(), “崩溃:” + ex.getCause());ToastUtils.showMessage(BaseApplication.getInstance(), “很抱歉,程序出现异常,即将退出”);//通过反射获取所有的字段信息 比如时间,设备系统版本,设备型号等等。

2401_87021686的博客 899

android自定义异常处理与错误日志上传

使用场景: 1.作为一个android开发者,我们在使用真机调试的时候如果不建立adb连接是很难查看程序报出的错误信息的,我们通过使用此方法可以将错误日志捕获并且存储到本地或者上传到服务器。 2.当我们的应用程序上线,可能会因为机型问题导致我们的程序出现问题,我们可以通过此方法来将错误日志上传到我们服务器上,通过查看日志来使我们不断的完善我们的APP

razeSpirit的专栏 1万+

android kotlin 打印

我整理的一些关于【字符串】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/bLN8S1Android开发中的Kotlin打印技巧 在Android开发过程中,打印日志是一项非常重要的调试手段。使用Kotlin语言,可以更简洁地进行打印和日志记录。本文将介绍在Android中如...

weixin_42386819的博客 483

android c++打印堆栈

比如在BufferQueueConsumer.cpp打印堆栈。

fuyinghaha的专栏 961

Android 手机调试不输出错误日志与错误日志一闪而过的问题

最近 新买了一个华为手机,由于自己在做项目的时候,就把它拿来调试了,但是发现了一个问题,手机怎么都不输出错误日志,但是自己打印的log是可以输出的,这样没有错误日志,调试起来解决问题非常麻烦。     一开始我一直认为是我的开发工具配置的问题,于是在网上找了好多关于开发工具导致Log不输出的问题,可是都没用。后来用同事的手机调试的时候是有错误信息输出的。哎!终于找到了问题所在了。      原

liaoyi的博客 9644

安卓打印错误日志

终端运行命令: adb logcat > log.txt 文件会生成在当前文件夹

张瑞东的博客 371

【实战】Android JNI中C++高效打印Logcat日志的配置与优化

本文详细介绍了在Android JNI开发中,如何高效配置和优化C++层的Logcat日志输出。通过宏封装实现多级别日志控制、线程安全处理和性能优化技巧,帮助开发者提升调试效率并减少性能损耗,特别适用于需要频繁进行日志输出的高性能计算场景。

aa123的博客 952

Android日志打印的注意事项

背景 在Android开发过程中难免会需要日志输出的,日志在开发调试、异常跟踪以及排查问题上都有很大的帮助,但是打印日志是一个损耗性能的动作,会占用程序执行资源,如果处理不好的话有可能会造成ANR等问题,前段时间在为公司整理基础开发库,其中涉及到日志记录库,遇到了一些坑,所以下面就日志相关的内容整理一些需要注意的关键点。 记录日志的方式 System.out.println() 这种方式一般是...

Coder蒋的博客 4935

Android自定义错误日志收集

一、概述 一般做Android开发的朋友多多少少都会碰见各种各样的问题,一般都怎么解决这些bug尼?有的朋友会说Debug,但是有没有想过,万一客户上线了尼?打过电话,说软件出错了,那这个时候如果不做错误收集,那么就会无法知道发生什么问题了,这个时候就需要我们自己手动的做错误收集了。 二、自定义我们的异常收集类Cra

刘洋巴金的专栏 6865
上一篇: Android Xmpp断线重连
下一篇: ViewPager中的FragmentPagerAdapter,FragmentStatePagerAdapter
android_xiaogang
博客等级 码龄12年 89粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值