二、iOS端实现sentry日志收集

至于为什么要搭建?
目的是为了测试移动端程序上传符号表是否可以定位具体的崩溃代码。Sentry作为一款开源的日志跟踪平台。使我们能够快速定位到错误所在的文件和行号。

集成Sentry

CocoaPods集成:

pod 'Sentry', '~> 6.0.9'

项目中使用

#import <Sentry/Sentry.h>
[SentrySDK startWithConfigureOptions:^(SentryOptions * _Nonnull options) {
        options.dsn = @"http://304ca6bc430645aea25082b1c6426a79@127.0.0.1:9000/2";
        options.debug = YES;
    }];

dsn 换成你自己。dsn如何寻找,如下图所示
在这里插入图片描述
就这简单的就可以收集崩溃日志信息了。
但是问题来了,我们有时候收集的崩溃信息定位不到具体的代码。
在这里插入图片描述
这时候,就需要我们的符号表(dSYM文件)来进行处理了。

dSYM文件上传到Sentry

官网有两种方案:
https://docs.sentry.io/platforms/apple/guides/ios/dsym/#bitcode-sentrycli
第一种是Fastlane
第二种是sentry-cli

1、Fastlane上传dSYM

Fastlane的安装就不描述了。具体我说下插件的安装,进入项目文件夹后,可以通过命令fastlane add_plugin sentry 进行插件的安装,完成之后,我们可以通过查看fastlane 文件夹下的Pluginfiles来确定插件的安装情况,如下:

gem 'fastlane-plugin-pgyer'
gem 'fastlane-plugin-sentry'

完成插件安装之后,我们需要配置一下sentry的lane,打开Fastfile,创建一个新的lane。如下:

  desc "上传到sentry"
  lane :upload_symbols do
  sentry_upload_dsym(
    #api_host: 'http://127.0.0.1:9000/', //替换成你自己的sentry地址
    auth_token: '9afb0adf98a340b1bc8d1445e38f01921c5ec1d5cd5640bd8cf81f404e2a0b91',
    org_slug: 'sentry',
    project_slug: 'ios',
  )
  end

这里我们说下

  • auth_token获取:
    在这里插入图片描述
  • org_slug的获取
    在这里插入图片描述
  • project_slug的获取,就是你们sentry上创建的iOS项目
    在这里插入图片描述
    这样,fastlane上传的配置信息就此配置完毕。这一块上传可以结合fastlane自动打包来进行自动化上传,将此lane接在自动化打包之后即可。

####2、 sentry-cli上传dSYM

1、安装sentry-cli
  • 第一种
brew install sentry-cli
  • 第二种
curl -sL https://sentry.io/get-cli/ | bash

安装成功如下所示
在这里插入图片描述
此时用sentry-cli上传dSYM有两种方式:

2、终端上传dSYM

需要先配置SENTRY_URL:

export SENTRY_URL=http://127.0.0.1:9000/ //替换自己的sentry地址

执行sentry-cli上传

sentry-cli --auth-token YOUR_AUTH_TOKEN upload-dif --org example-org --project example-project PATH_TO_DSYMS

YOUR_AUTH_TOKEN 就是上图的auth_token获取结果。
example-org 就是org_slug的获取结果
example-project就是project_slug的获取结果
PATH_TO_DSYMS 就是你Release下的打包的符号表。
在这里插入图片描述
在这里插入图片描述

3、XCode的build phases自动上传dSYM

在这里插入图片描述
配置内容如下:

 if which sentry-cli >/dev/null; then
export SENTRY_URL=http://127.0.0.1:9000/
export SENTRY_LOG_LEVEL=debug
//SENTRY_ORG org_slug的获取上图的获取的结果
export SENTRY_ORG=sentry
//project_slug的获取,就是你们sentry上创建的iOS项目
export SENTRY_PROJECT=ios
// auth_token获取
export SENTRY_AUTH_TOKEN=9afb0adf98a340b1bc8d1445e38f01921c5ec1d5cd5640bd8cf81f404e2a0b91
ERROR=$(sentry-cli upload-dif "$DWARF_DSYM_FOLDER_PATH" 2>&1 >/dev/null)
if [ ! $? -eq 0 ]; then
echo "warning: sentry-cli - $ERROR"
fi
else
echo "warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases"
fi

如果你的xocde版本是Xcode 10以后的。还需要在Input Files中加上以下代码:

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

如图所示:
在这里插入图片描述

成功后显示
在这里插入图片描述

结果对比,可以查看正确崩溃代码位置

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值