android怎样实时上传崩溃日志到服务器

由于公司想实时的收集应用的bug错误信息。然后把bug信息上传到服务器,再推送到开发人员的邮箱和微信,好及时响应解决方案。看到网上很多是保存错误信息为TXT文件然后再次启动的时候进行上传,但是这样的话,同步性就差了 。

然后开始进行操作:

1,实现Thread.UncaughtExceptionHandler方法,然后在uncaughtException方法中把崩溃日志上传到服务器。当时在模拟器里面运行挺好的,但是到真机的时候就不行了。为什么因为真机不会等你上传log到服务器就把进程杀死了。失败,还是经验不足啊。

2,既然上面方法不行,那就开始在崩溃的时候开启一个新的服务进行上传崩溃日志操作,并且让这个服务在一个新进程中进行运行(这样不容易被杀死)。拦截系统处理崩溃日志,然后重启app。这样是可以把崩溃日志上传到服务器,但是老大说app崩溃了,不能进行自启,要让系统进行处理,好吧(mmp)。

3,那就只有来第三种了,让系统处理崩溃,然后把错误日志上传到服务器然后再停止服务,但是万一上传到服务器的接口超时怎么办(不是有超时设置吗??)还有就是app崩溃了,app还有一个空进程在运行。

4,然后无解只有上折中办法了,让系统处理崩溃,然后把错误日志上传到服务器并且服务只能运行2秒钟,如果2秒钟错误日志没有上传到服务器,那么这个错误信息就不要了。然后再停止服务,在服务销毁的时候同时销毁进程。

核心代码:

public int onStartCommand(Intent intent, int flags, int startId) {
    stopDelayed = intent.getLongExtra("Delayed", 2000);
    PackageName = intent.getStringExtra("PackageName");
    expection = intent.getStringExtra("exception");
    try {
            //这里上传崩溃日志
    } catch (java.lang.Exception e) {
        e.printStackTrace();
    }
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
/*            Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(PackageName);
            startActivity(LaunchIntent);*/
            KillSelfService.this.stopSelf();
            //android.os.Process.killProcess(android.os.Process.myPid());
        }
    }, stopDelayed);

    return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
    super.onDestroy();
    Log.i(TAG, "onDestroy: ");
    android.os.Process.killProcess(android.os.Process.myPid());
}



然后一出bug你的邮箱和微信就来骚你了。

代码就不上了,大家有好的办法可以提供意见, 我总觉得应该有什么好的方式我错过了可怜

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Android平台上,要实现将日志实时输出到对应服务器,可以通过以下步骤实现: 1. 确定服务器的相关信息:包括服务器的IP地址、端口号以及接收日志信息的URL地址等。 2. 在Android应用的代码中,使用Log类记录需要输出的日志信息。例如,使用Log.d()方法记录调试信息,Log.e()方法记录错误信息等。 3. 创建一个类,用于将日志信息发送到服务器。可以使用HttpClient或者OkHttp等第三方网络库来发送HTTP请求。 4. 在发送日志信息之前,先将日志信息保存到一个队列或缓存中,以便在网络不稳定或连接异常时,仍能保留日志信息。 5. 在合适的时机触发日志发送机制,例如在应用启动时、程序退出时、或者通过定时器等方式。 6. 在发送日志信息的类中,通过HTTP POST或者HTTP GET等方式将日志信息发送到服务器的URL。 7. 服务器端可以使用相应的接收日志信息的脚本、API或者自定义开发的接口来处理接收到的日志信息。例如,可以将日志信息存储到数据库中,或者写入到日志文件中等。 8. 在Android应用的代码中,可以根据服务器返回的结果,进行相应的处理,例如提示用户发送日志成功或失败,并根据需要做出相应的逻辑处理。 总之,通过以上步骤,可以实现在Android应用中实时日志输出到对应的服务器,并能够在服务器端对接收到的日志信息进行处理和存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值