移动开发中的日志记录与监控:实质、工具及如何配置

作者: IT Sectr 发布日期: 2026-05-27 阅读时间: 8 分钟

日志记录和监控是移动应用稳定性的两大支柱。根据Gartner(2025)的数据,APM解决方案市场到2027年将达到80亿美元。正确的日志记录不仅能够发现错误,还能在问题影响用户之前进行预测。

要点

  • 在iOS上,主要工具是os_log(内置系统日志记录)和CocoaLumberjack(支持轮转和格式化的灵活库)。iOS上的监控可以实时控制性能。
  • 在Android上,标准是Timber(Logcat的包装器)和系统Log。Timber自动插入类标签并管理日志级别。
  • 结构化日志记录 — 以JSON格式记录日志。可以通过ELK、Grafana或Datadog自动分析日志。推荐用于生产和自动监控。
  • APM(应用性能监控) — 一类用于移动应用监控的工具:New Relic、Datadog、Firebase Performance。
  • 日志轮转和远程日志记录对于生产环境是强制性的。日志不应填满设备内存,并且必须可供开发人员远程访问。

iOS上的日志记录与监控:os_log和CocoaLumberjack

iOS上的移动应用日志记录基于os_log构建 — Apple的内置系统,自iOS 10起可用。os_log将日志写入单一系统日志(在设备上或通过Console.app),支持类别、级别和隐私标签。通过Console.app和xcrun在iOS上结合日志记录和监控,可以实时跟踪错误和性能。

iOS上的日志级别

os_log的级别包括:Default、Info、Debug、Error、Fault。在生产环境中,保留Error和Fault — Debug和Info被禁用。选择正确的级别是iOS上移动应用监控策略的一部分。隐私:%{public}@用于未受保护的数据,%{private}@用于个人数据。

CocoaLumberjack

CocoaLumberjack是一个流行的iOS日志记录库。与os_log不同,它支持自定义格式、异步写入和日志轮转。DDLog、DDTTYLogger(控制台)、DDFileLogger(带轮转的文件)。对于远程监控,CocoaLumberjack可以与os_log结合使用 — 写入文件进行远程日志记录,并写入os_log供Console.app使用。

Android上的日志记录与监控:Timber和日志级别

Android上的移动应用日志记录使用Timber — Jake Wharton的库,已成为平台的标准。Timber是Android Log(Logcat)的包装器,自动添加类标签并配置Tree。Timber是Android移动应用监控系统的一部分:DebugTree用于调试,CrashlyticsTree用于发送数据。

Timber详解

Timber使用Tree — 决定如何处理日志的组件。在调试版本中,使用DebugTree(输出到Logcat),在发布版本中 — CrashlyticsTree(发送崩溃)。Timber.wtf()记录致命错误。Timber.tag("CustomTag")覆盖标签。为了有效监控,Timber与APM工具结合使用。

Android上的日志级别

Android Log的级别包括:VERBOSE、DEBUG、INFO、WARN、ERROR、ASSERT。ProGuard/R8在发布版本中移除Log.d和Log.v — Timber允许通过Plant进行日志记录。级别的选择影响移动应用监控的质量 — 在生产环境中,保留WARN和ERROR。

工具 平台 格式 轮转 远程 复杂度
os_logiOS结构化系统Console.app
CocoaLumberjackiOS文本/JSONDDFileLogger是(自定义)
TimberAndroid文本Logcat/自定义Tree
SentryiOS/AndroidJSON服务器
LogcatAndroid文本缓冲区ADB

选择日志记录工具时,请考虑:是否需要远程日志记录、日志变更的频率以及谁将进行分析。对于初创公司,os_log或Timber就足够了。对于企业 — CocoaLumberjack配合服务器发送。在IT Sectr,我们为Android使用Timber + Crashlytics组合,为iOS使用os_log + CocoaLumberjack组合。

结构化日志记录

结构化日志记录 — 以JSON格式而非纯文本记录日志。示例:我们不写"User login failed",而是写{"event": "login_failed", "user_id": 123, "reason": "invalid_password"}。这是自动监控的基础 — ELK栈和Grafana可以过滤、聚合和分析此类数据。

结构化日志记录的优势

按字段过滤:查找过去一小时内所有event=crash的日志。聚合:按应用版本构建错误数量图表。与ELK(Elasticsearch、Logstash、Kibana)或Grafana集成。结构化日志记录对于首次发布不是强制性的,但当DAU超过10,000时变得至关重要。

远程日志记录与日志轮转

远程日志记录 — 将日志从设备发送到服务器进行集中监控。通过自定义Tree(Android)或HTTP请求实现。只发送Error和Warning — 不要浪费用户的流量。日志轮转:DDFileLogger(iOS)每1 MB或1天。在Android上,Logcat缓冲区是有限的。

APM与移动应用监控:Sentry、New Relic、Datadog

应用性能监控(APM) — 一类用于移动应用监控的工具。APM衡量:启动时间、网络请求、FPS、内存使用、崩溃频率。主要参与者:Sentry(Performance)、New Relic Mobile、Datadog Mobile。

Sentry Performance

Sentry — 不仅提供崩溃报告,还提供性能监控。Sentry Performance创建分布式追踪,显示每个阶段花费的时间:从按钮按下到服务器响应。支持iOS、Android、Flutter、React Native。每月最多5,000个事件免费。

New Relic和Datadog

New Relic Mobile提供指标:会话数、应用内时间、崩溃频率、网络请求。Datadog Mobile是更现代的工具,具有实时仪表板和警报。两者都是付费的,但有免费层级。IT Sectr建议从Firebase Performance开始,当DAU超过100,000时切换到付费APM。

Firebase Performance

Firebase Performance — Google提供的免费移动应用监控工具。自动收集指标:应用启动时间、HTTP请求(URL、方法、响应代码)、FPS。对于自定义追踪,请使用Trace API。集成:将SDK添加到build.gradle(Android)或Podfile(iOS)。

Trace与指标

Trace — 带有开始和结束的时间段,由您测量。示例:trace = FirebasePerformance.getInstance().newTrace("checkout_process")。指标 — 数值指标(响应大小、项目数量)。Firebase Performance不需要服务器基础设施 — 所有数据通过Firebase SDK传输。在监控移动应用时,Trace API为性能分析提供上下文。

常见问题

有哪些日志级别以及何时使用它们?

标准级别:ERROR(严重错误)、WARN(潜在问题)、INFO(关键事件)、DEBUG(调试)、VERBOSE(详细追踪)。在生产环境中,保留ERROR、WARN和INFO,其余禁用。

Timber与Android上的Logcat有何不同?

Timber是Jake Wharton开发的Logcat包装库,用于Android上的移动应用日志记录。它自动插入类标签、配置Tree,并只需一行代码即可在生产环境中禁用日志。

什么是APM,为什么移动应用需要它?

APM(应用性能监控) — 一类用于跟踪性能的工具:启动时间、网络请求、内存使用、崩溃频率。在监控移动应用时,New Relic、Datadog和Firebase Performance有助于在用户投诉之前发现瓶颈。

初创公司是否应该使用付费的APM解决方案?

对于初创公司,Firebase Performance就足够了 — 这是一个免费的移动应用监控工具。当需要详细追踪和自定义仪表板时,可以连接New Relic和Datadog。IT Sectr建议从Firebase开始,当DAU超过100,000时切换到付费解决方案。

什么是结构化日志记录,它比纯文本好在哪里?

结构化日志记录是一种以JSON或键值对形式(而非纯文本)的日志格式。它允许按字段过滤日志、构建图表并在ELK或Grafana中自动分析。没有结构化日志,很难在数千条记录中找到模式。

总结

  • os_log — iOS上基本的日志记录和监控工具。CocoaLumberjack增加了灵活性、轮转和远程日志记录。
  • Timber — Android上移动应用日志记录的标准。DebugTree用于调试,CrashlyticsTree用于发布版本。
  • 结构化日志记录(JSON)对于自动日志分析是必需的。可与ELK、Grafana、Datadog集成。
  • APM — Sentry Performance、New Relic、Datadog。Firebase Performance — 面向初创公司的免费移动应用监控工具。
  • 日志轮转可防止设备内存溢出。配置DDFileLogger(iOS)或使用Logcat缓冲区(Android)。
  • 远程日志记录 — 只发送Error和Warning日志。所有日志都会消耗用户流量。
  • Trace API和breadcrumbs(Sentry)为移动应用监控提供上下文,将日志转化为事件故事。

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目