二、iOS端实现sentry日志收集

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

集成Sentry

CocoaPods集成:

pod 'Sentry', '~> 6.0.9'

项目中使用

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

dsn 换成你自己。dsn如何寻找,如下图所示
二、iOS端实现sentry日志收集_第1张图片
就这简单的就可以收集崩溃日志信息了。
但是问题来了,我们有时候收集的崩溃信息定位不到具体的代码。
二、iOS端实现sentry日志收集_第2张图片
这时候,就需要我们的符号表(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获取:
    二、iOS端实现sentry日志收集_第3张图片
  • org_slug的获取
    二、iOS端实现sentry日志收集_第4张图片
  • project_slug的获取,就是你们sentry上创建的iOS项目
    二、iOS端实现sentry日志收集_第5张图片
    这样,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下的打包的符号表。
二、iOS端实现sentry日志收集_第6张图片
二、iOS端实现sentry日志收集_第7张图片

3、XCode的build phases自动上传dSYM

二、iOS端实现sentry日志收集_第8张图片
配置内容如下:

 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}

如图所示:
二、iOS端实现sentry日志收集_第9张图片

成功后显示

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

二、iOS端实现sentry日志收集_第10张图片
二、iOS端实现sentry日志收集_第11张图片

你可能感兴趣的:(Sentry,日志跟踪,崩溃定位,Sentry,日志跟踪,崩溃日志定位)