为数据收集启用调试日志记录

诊断日志记录有助于解释实施运行时的SDK命令、标记执行、警告和错误。 当您还需要检查请求或处理时,可将其与请求检查一起使用。 如果不确定从何处开始,请参阅调试和疑难解答概述。

选择日志记录方法 choose-a-logging-method

实施
启用日志记录
在何处阅读它
范围和重置
直接实现的Web SDK
debugEnabled、setDebug、alloy_debug查询参数或调试器
浏览器控制台
debugEnabled适用于运行该配置的每个访客。 setDebug和alloy_debug仅适用于您的浏览器选项卡,在该选项卡中跨相同源页面加载保留,并且优先于debugEnabled。 完成后显式禁用它们。
标记,包括扩展管理的Web SDK
_satellite.setDebug(true)
浏览器控制台
仅适用于您的浏览器。 存储在源的本地存储中,因此在页面加载和浏览器重新启动时它会持续存在,直到您运行_satellite.setDebug(false)或清除站点数据为止。
服务器SDK
debugEnabled 或 setDebug
服务器控制台/日志输出
配置设置实例和请求句柄的基线。 运行时更改仅影响调用的实例或句柄。 除非您的代码重新应用设置,否则这些设置不会在进程重新启动后继续使用。
Mobile SDK
MobileCore.setLogLevel
Android Logcat或iOS开发控制台
应用于正在运行的应用程序。 在每次启动初始化期间设置所需的级别;在调试后恢复错误级别的日志记录。

默认情况下,Web SDK、标记库和Server SDK调试日志记录处于禁用状态。 Mobile SDK默认为错误级别的日志记录,而不是无日志记录。

IMPORTANT
调试消息可以包含事件数据和访客标识符。 首选进行本地或仅用于开发的调试,避免详细的生产日志记录,并在共享输出之前删除敏感信息。 日志记录无法证明Edge Network或下游服务已接收并处理事件。

按库启用日志记录 enable-logging

展开实施所使用的库的部分。 每个部分都说明如何启用日志记录、从何处读取输出以及如何关闭日志记录。

Web SDK

以下方法控制Web SDK诊断输出。 它们不会为独立的Web SDK实施启用标记库日志记录。

configure命令​中的debugEnabled:在现有configure调用中将debugEnabled设置为true。 此设置在开发环境中很有用。 如果部署在网站的代码中,它可为运行该配置的访客启用日志记录。

code language-js
alloy("configure", {
  datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
  orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg",
  debugEnabled: true
});

将配置值更改为false或在后续部署中忽略它以恢复默认值。 不要在同一实例上再次运行configure以切换日志记录;请改用setDebug。 本地调试覆盖可以优先于配置值。 有关配置引用,请参阅debugEnabled。

命令setDebug:对浏览器控制台中的相应Web SDK实例运行此命令:

code language-js
alloy("setDebug", { enabled: true });

完成后,将其禁用:

code language-js
alloy("setDebug", { enabled: false });

在控制台中运行此命令会更改您的本地实例,而不会更改其他访客的浏览器。 如果将相同的命令置于已部署的网站代码中,则会影响执行该代码的访客。 当浏览器存储可用时,本地覆盖可在相同源选项卡会话中在该实例的页面加载之间持续存在。 有关详细信息,请参阅setDebug。

查询字符串参数alloy_debug: alloy_debug=true添加到页面URL,然后加载页面:

code language-text
https://example.com/?alloy_debug=true

如果URL已有查询参数,请使用&alloy_debug=true。 此参数启用本地日志记录而不更改已部署的代码。 Web SDK会在创建每个实例时读取参数,因此该参数适用于页面上的每个Web SDK实例。 当浏览器存储可用时,该设置会针对选项卡的同源会话持续存在,因此仅删除参数不会禁用日志记录。 加载带有alloy_debug=false的页面或运行带有enabled: false的setDebug以禁用它。 如果URL仍包含alloy_debug=true,则重新加载它会再次启用日志记录。

Adobe Experience Platform Debugger:打开Adobe Experience Platform Debugger,选择Web SDK部分,然后在其配置选项卡中启用调试。 完成后,关闭该选项。

在Debugger中启用Web SDK调试

此过程可启用诊断输出;使用Debugger进行请求或Edge检查将在检查数据收集请求中涉及。

标记和Web SDK标记扩展

在具有标记库的页面上,在浏览器控制台中运行以下命令:

code language-js
_satellite.setDebug(true);

此命令公开标记库消息,包括_satellite.logger输出。 对于由Web SDK标记扩展管理的Web SDK实例,该扩展在配置SDK时使用标记调试模式,并将后续调试模式更改转发到它。 请勿认为为独立或外部配置的Web SDK实例打开调试功能也会启用标记日志记录。

Web SDK标记扩展在其标记配置UI中不提供调试切换。 对扩展管理的实例使用控制台方法。 将其排除在标记规则之外。

要禁用标记调试模式和相应的扩展管理的SDK日志记录,请执行以下操作:

code language-js
_satellite.setDebug(false);

标记调试模式存储在浏览器的本地存储中,供页面源使用。 它会在页面加载和浏览器重新启动期间持续存在,直到您禁用它或清除站点数据,并且它不会为其他访客启用日志记录。 有关范围和持久性的详细信息,请参阅_satellite.setDebug()。

标记库仅在标记调试模式更改时通知扩展。 如果标记调试模式已打开,但缺少Web SDK消息,则setDebug或alloy_debug的Web SDK覆盖可能已关闭SDK日志记录。 运行_satellite.setDebug(false),然后运行_satellite.setDebug(true),或使用设置覆盖的相同Web SDK方法。

服务器SDK

服务器SDK将诊断输出写入服务器控制台,而不是访客的浏览器。

在现有服务器端configure调用中设置debugEnabled: true以启用实例的日志记录以及从该配置创建的forRequest句柄。 默认值为 false。 有关完整的配置示例,请参阅debugEnabled。

对于定向调查,请对forRequest返回的请求范围句柄调用setDebug。 仅记录该句柄的更改,以便您可以调试单个请求而无需为所有访客启用它:

code language-js
const visitor = alloy.forRequest({ request: req });

await visitor.setDebug({ enabled: true });
await visitor.sendEvent({
  xdm: { eventType: "web.webpagedetails.pageViews" }
});

在顶级实例上调用setDebug将只更改直接在该实例上进行的调用的日志记录,而不更改其请求句柄的日志记录,直到您禁用它或进程重新启动为止。 要更改所有请求句柄的基线,请更新服务器配置中的debugEnabled。

消息以方括号标识实例,如[alloy],并包括配置、方法输入/结果、警告和错误。 查看服务器进程的输出或托管环境路由该进程的日志目标。

Mobile SDK

使用移动核心的setLogLevel API选择诊断详细程度。 Android默认为LoggingMode.ERROR;iOS默认为LogLevel.error。 在重现问题之前,在应用程序初始化期间设置所需的级别。

Android:在您的开发应用程序中启用详细日志记录:

code language-kotlin
import com.adobe.marketing.mobile.LoggingMode
import com.adobe.marketing.mobile.MobileCore

MobileCore.setLogLevel(LoggingMode.VERBOSE)

在Android Studio的​ Logcat ​中查看正在运行的应用程序进程的输出。 Mobile SDK消息使用AdobeExperienceSDK标记,因此请使用tag:AdobeExperienceSDK进行筛选,并确保日志查看器允许调试和详细消息。 完成后恢复错误级别日志记录:

code language-kotlin
MobileCore.setLogLevel(LoggingMode.ERROR)

iOS:在开发应用程序中启用跟踪日志记录:

code language-swift
import AEPCore
import AEPServices

MobileCore.setLogLevel(.trace)

在Xcode中查看正在运行的应用程序的控制台并筛选AEP SDK。 完成后恢复错误级别日志记录:

code language-swift
MobileCore.setLogLevel(.error)

返回到错误级别会减少诊断输出;它不会抑制错误。 这些调用会更改正在运行的应用程序中的日志记录,而不会更改其他安装。 请确保您的初始化代码不会在下一次启动或生产版本中重新启用详细日志记录。

有关Java、Objective-C、支持的级别和特定于版本的详细信息,请参阅移动核心API引用。 对于React Native或Flutter,请使用您的Mobile SDK包装器公开的API,而不是将本机调用直接复制到包装器代码中。 有关连接的事件检查而不是运行时控制台输出,请参阅Assurance。

读取诊断输出并排除故障 read-output

使用以下标识符查找SDK并在繁忙的日志输出中标记消息。 如果您重命名Web SDK或服务器SDK实例,请查找该名称而不是alloy。

源
查找
Web SDK
括号中的实例名称,如[alloy],后跟组件消息的组件名称
标记
🚀,后跟方括号中的原始规则、扩展名或数据元素名称。 请参阅_satellite.logger。
服务器SDK
括号中的实例名称,如[alloy]
移动设备SDK (Android)
Logcat标记AdobeExperienceSDK
移动设备SDK (iOS)
AEP SDK,后跟日志级别和扩展标签
  • 检查输出位置:浏览器设置不会公开服务器或本机应用程序日志。 选择正确的浏览器页面、服务器进程或应用程序进程。
  • 检查日志级别: Web SDK消息使用浏览器默认显示的标准控制台级别。 来自_satellite.logger.debug()的消息需要控制台的详细级别,Mobile SDK调试和详细消息需要包含这些级别的日志查看器。
  • 在操作之前启用日志记录:不会因为您启用了日志记录而重新创建现有消息。 在启用问题后重现问题。
  • 检查活动控件: Web SDK本地覆盖可以取代配置。 标记和独立SDK实例不一定会共享设置。
  • 将日志与传输证据区分开:日志可以显示已运行命令或已选择传输,但未证明接收。 请参阅检查数据收集请求以检查请求、响应和支持的处理视图。

Web SDK 监视挂接是一个单独的程序化机制,无论调试日志记录设置如何,它都会运行。 原始API客户端、数据流和事件转发不共享一个通用SDK日志记录开关;请相应地使用其应用程序日志或服务诊断。

recommendation-more-help
experience-platform-help-collection