日志管理
SDK 提供多类独立日志能力,各类日志可 单独开启,互不影响。请按问题场景选择对应日志类型,避免在生产环境长期开启高粒度日志。各日志的特点与限制见下文对应章节。
| 日志类型 | 配置入口 | 典型场景 |
|---|---|---|
| 导航日志(TaLog) | TaLog |
导航、地图、求路、渲染等 SDK 运行问题 |
| Search 日志 | 待补充 | Search 检索相关问题 |
| 定位引擎日志 | NavigationServiceOptions |
路测定位、偏航、绑路等问题 |
| EH 日志 | EHServiceOption |
ADAS / EH 相关问题 |
1. 通用说明
- 各类日志默认 关闭,仅在问题分析阶段按需开启,问题定位完成后及时关闭。
- 日志目录需提前创建,并确保应用具备 读写权限。
- 建议将日志写入应用私有目录(如
context.getExternalFilesDir(...)),避免硬编码/sdcard/路径带来的权限与兼容性问题。
2. 导航日志(TaLog)
TaLog 是 SDK 统一的日志接口,输出导航、地图、求路、渲染等模块的运行信息,支持控制台输出与文件落盘。
2.1 特点与限制
- 配置时机: 可以在调用
SDK.getInstance().initialize(...)之前 完成配置。 - 输出方式: 支持 Logcat 与单文件落盘;也可通过
LogHandler自定义处理。 - 文件划分: 不支持 按模块或 Topic 自动拆分多个日志文件;
setLogPath仅写入单个文件。需分文件时请使用LogHandler或应用层自行划分。
2.2 文件划分与 LogHandler
若需按业务模块划分日志(例如导航、地图、渲染分文件存储),请自行选择以下方式之一:
- 自行划分:在应用层根据
tag或业务规则,将 Logcat 输出分流到不同文件。 - 使用
LogHandler:通过TaLog.setLogHandler(...)接管全部 TaLog 输出,在回调中实现自定义落盘、分文件、上传等逻辑。
设置
LogHandler后,日志 不再 输出到 Logcat,也 不再 写入setLogPath指定的文件;需由 Handler 自行处理。传入null可移除 Handler,恢复默认输出行为。
2.3 使用场景
| 环境 | 建议级别 | 说明 |
|---|---|---|
| 生产环境 | WARNING 或 ERROR |
减少日志量,仅保留告警与错误 |
| 测试 / 路测 | INFO |
便于跟踪主要业务流程 |
| 专项问题分析 | VERBOSE(按需) |
日志量极大,仅用于短期排查;分析渲染问题时,可对渲染 Topic 单独开启 VERBOSE |
2.4 开启示例
在调用 SDK.getInstance().initialize(...) 之前 配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
常用 API:
| API | 说明 |
|---|---|
TaLog.enableLogs(boolean) |
是否输出到 Logcat |
TaLog.enableWriteLogsToFile(boolean) |
是否写入单个日志文件(无分文件能力) |
TaLog.setLogPath(String) |
日志文件路径(单文件) |
TaLog.setLogHandler(LogHandler?) |
自定义日志处理;设置后不再输出到 Logcat / 文件 |
TaLog.setLogLevel(int) |
设置全局日志级别 |
TaLog.setLogLevel(String topic, int level) |
为指定 Topic 单独设置级别 |
日志级别(NavLogLevelType): VERBOSE < INFO < WARNING < ERROR(数值越小,输出越详细)。
常用 Topic(LogTopics):
| 常量 | 说明 |
|---|---|
LogTopics.MAP_DISPLAY |
地图渲染引擎 |
LogTopics.TNJNI |
JNI 层 |
3. Search 日志
Search 日志用于分析 POI 检索、Onebox 搜索、沿途搜索等 Search 相关问题。
3.1 特点与限制
Search 使用 slf4j-api 来记录日志. 使用前你需要配置相关依赖项,例如 slf4j-log4j2 或 slf4j-nop .
在 Android 系统上,建议使用 logback-android.
3.2 使用场景
- Search 结果不符合预期
- 搜索请求失败或超时
- 检索排序、过滤逻辑异常
3.3 开启方式
1 | |
建议将 logback-android 声明为 runtimeOnly 作用域(类似于 Maven 中的 runtime 作用域)。这意味着这些类仅在运行时可用,而非在开发阶段可用。这可以确保您始终使用 Slf4j API 进行编程。
下面给出一个将 SDK 日志记录到 logcat 控制台的示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
以下示例展示了如何将 SDK 日志记录到文件 #APP_LOG_PATH#/sdkLogs/sdkLog.log 中。日志文件将每日轮换,目前仅保留最新的 7 个日志文件。更多详情请参阅 document .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | |
4. 定位引擎日志
定位引擎(Position Engine)日志记录定位引擎内部运行信息,包括地图匹配、轨迹推算及 GNSS 处理等过程。
4.1 特点与限制
- 独立性: 与
TaLog相互独立;开启定位引擎日志不影响TaLog的全局级别。 - 配置时机: 在创建
NavigationService时,通过NavigationServiceOptions配置。 - 存储方式: 支持配置独立存储目录(
setPositionEngineLogStorePath);目录须提前创建且具备读写权限。未指定路径且已开启时,默认写入PE_Logs子目录。
4.2 使用场景
- 路测时分析定位漂移、偏航、绑路错误
- 隧道、弱 GPS 场景下的位置推算问题
- 排查
LocationProvider输入与 SDK 内部定位结果不一致 - 联调、问题定位阶段按需开启(生产环境建议关闭)
4.3 开启示例
在创建 NavigationService 时配置(默认关闭):
1 2 3 4 5 6 7 8 | |
相关 API:
| API | 说明 |
|---|---|
enablePositionEngineLog(enabled) |
开启 / 关闭定位引擎文件日志,默认 false |
setPositionEngineLogStorePath(path) |
日志存储目录,目录必须已存在 |
5. EH 日志(ADAS)
EH 日志记录 ADAS / Electronic Horizon 服务运行数据,用于 ADASIS 消息、路径预测等问题的分析。
5.1 特点与限制
- 使用范围: 仅在 ADAS 相关问题排查时开启;日常导航问题请优先使用
TaLog或定位引擎日志。 - 独立性: 与
TaLog、定位引擎日志相互独立。 - 配置时机: 在创建
EHService时,通过EHServiceOption配置。 - 存储方式: 支持配置独立存储目录(
setLogStorePath)及日志级别(SIMPLIFIED/FULL)、压缩选项;目录须提前创建且具备读写权限。
5.2 使用场景
- EH 消息异常、ADASIS 编码问题
5.3 开启示例
在创建 EHService 时配置(默认关闭):
1 2 3 4 5 6 7 8 9 10 | |
相关 API:
| API | 说明 |
|---|---|
enableLog(enabled) |
开启 / 关闭 ADAS 日志,默认 false |
setLogStorePath(path) |
日志存储目录,目录必须已存在;未设置时使用配置文件中的默认路径 |
setLogLevel(level) |
日志详细程度,默认 SIMPLIFIED |
enableLogCompressed(enabled) |
是否压缩日志,默认 false |
日志级别(EHLogLevel):
| 级别 | 说明 |
|---|---|
SIMPLIFIED |
简化数据,仅包含几何点 |
FULL |
完整数据 |
6. 建议配置组合
| 排查目标 | 建议开启 |
|---|---|
| 一般导航 / 播报 / 偏航 | TaLog(INFO) |
| 地图渲染异常 | TaLog(INFO)+ LogTopics.MAP_DISPLAY(VERBOSE) |
| 定位 / 绑路 | TaLog(INFO)+ 定位引擎日志 |
| ADAS / EH 消息 | EH 日志(FULL) |
| Search 检索 | Search 日志(待补充) |
7. 注意事项
- 生产版本不建议长期开启
INFO/VERBOSE或定位引擎 / EH 文件日志,以免影响性能与存储空间。 VERBOSE日志量极大,仅在问题复现阶段短期开启,定位完成后恢复为WARNING或ERROR。- 各类日志路径请使用应用可写目录,并确保具备读写权限。
- 问题分析结束后,关闭文件写入(
TaLog.enableWriteLogsToFile(false))或移除LogHandler(TaLog.setLogHandler(null)),并恢复默认日志级别。