故障排除—日志记录

诊断日志记录的作用是在应用程序执行时提供更多信息。记录的错误和警告可以帮助查明最终用户可能无法立即发现的系统内故障。可以临时启用更详细的日志记录,以方便用户在解决问题时更好地了解应用程序行为。

Blue Prism 使用经过验证的可靠库 NLog 来输出和记录日志信息。用户可以调整在全局或应用程序的特定区域中记录的信息量。还可以从各种日志输出目标(包括 Windows 事件日志、文本文件等)中进行选择。

日志记录级别

日志条目按级别分类。信息或更高级别的条目通常记录为标准条目。较低、更详细的级别(如调试和跟踪)可提供更详细的信息,但需要启用。

NLog 定义了以下从低到高的级别:

  • 跟踪—非常详细的日志,其中可能包含大量信息,如协议有效负载。此日志级别通常仅在开发期间启用。
  • 调试—调试信息,不如跟踪信息详细,由于可能对性能产生影响,通常未在生产环境中启用。
  • 信息—信息消息,通常在生产环境中正式启用。
  • 警告—警告消息,通常用于非关键问题,这些问题可以恢复或者是临时故障。
  • 错误—错误消息,大多数是异常。
  • 严重—非常严重的错误。

标准日志记录配置

标准 NLog XML 配置文件用于配置 NLog。使用两个单独的配置文件:

  • Automate.NLog.config—由 Automate(交互式客户端和资源 PC)、AutomateC 和 AppMan 使用
  • Server.NLog.config—由服务器使用(作为 BPServer.exe 和 Windows 服务运行)

安装 Blue Prism 后,默认日志配置文件安装在 Blue Prism 特定文件夹中,默认安装路径为:C:\ProgramData\Blue Prism Limited\Blue Prism。

日志配置文件包括两个主要日志目的地:

默认配置将“信息”级别及更高级别的日志条目(包括警告、错误和严重错误)定向到 Windows 事件日志。此外,还配置了文本文件日志记录,但默认情况下这种日志记录仅用于严重错误,即导致应用程序崩溃的未处理异常。这可确保崩溃信息可用,即使在 Windows 事件日志记录错误失败时也不受影响。

在正常使用 Blue Prism 期间,您不需要自行修改日志配置文件。在调查产品问题时,客户服务通常会提供备用日志配置文件。

请注意,修改日志记录配置可能会影响应用程序的性能,如果在生产环境中进行修改,则应特别小心。

对于技术娴熟的客户,以下链接可以提供其他有用信息。

Windows 事件日志

“信息”及更高级别的日志条目将定向到 Windows 事件日志。

事件日志设置在 <target name="app-eventlog" ... 元素中定义。这是通过配置结尾处的以下元素启用的:

<logger name="*" minlevel="Info" writeTo="app-eventlog" />

主日志称为 Blue Prism。事件日志源根据信息是由资源 PC、服务器还是交互式客户端记录而有所不同。

文本日志文件

日志文件将写入 Blue Prism 的特定目录。对于默认安装,目录为:C:\ProgramData\Blue Prism Limited\Blue Prism\Logs。此位置也适用于 Blue Prism API 日志文件。Control Room 日志文件已写入到 Blue Prism Hub 日志文件的默认位置 C:\Program Files (x86)\Blue Prism\。根据正在运行的应用程序(交互式客户端、服务器或资源 PC)生成单独的日志文件,并为每个资源 PC 生成唯一的文件名。

默认情况下,文本文件日志记录仅用于严重错误,即导致应用程序崩溃的未处理异常。这可确保崩溃信息可用,即使在 Windows 事件日志记录错误失败时也不受影响。

只有在需要更详细的调试信息时,才应启用详细的文本文件记录。Blue Prism 客户支持将就所需的配置更改提供建议。

文本文件日志记录的参数在 <target name="app-logfile" ... 元素中定义,并由配置文件末尾的以下元素控制:

<logger name="*" minlevel="Fatal" writeTo="app-logfile" />

标准配置包括日志存档和轮换机制,当文件达到 10 MB 时存档文件并保留最多 50 个存档文件。

以下是日志文件中的行示例:

2019-01-14 13:07:59.2395 DEBUG BluePrism.AutomateAppCore.clsResourceConnection BP0188:8182 - Beginning update. 当前状态:离线

标准配置中定义的此文本格式包含以下元素:

  • 日期和时间 (UTC)
  • 日志级别 (DEBUG、INFO、WARN、ERROR、FATAL)
  • 记录器名称—这通常用于识别日志条目所源自的类和命名空间
  • 日志消息
  • 错误信息(仅在记录了异常信息时可用)—完整详细信息将使用单独行记录如下

启用日志记录

通过编辑配置并指定您选择的级别,可以启用整个应用程序的文本文件日志记录:

<logger name="*" minlevel="Debug" writeTo="app-logfile" />

微调文本文件记录

也可以通过添加额外的日志记录器元素,对应用程序的一个或多个特定区域启用调试级别的文本文件日志记录,例如:

<logger name="*" minlevel="Info" writeTo="app-logfile" />

<logger name="BluePrism.AutomateAppCore.*" minlevel="Debug" writeTo="app-logfile" />

<logger name="BluePrism.AutomateUI.*" minlevel="Debug" writeTo="app-logfile" />

通配符可用于指定命名空间级别下方的多个记录器。

通过使用空的 writeTo 属性,还可以在应用程序的某些区域禁用文本文件日志记录,例如:

<logger name="BluePrism.AutomateAppCore.*" minlevel="Debug" maxLevel="Fatal" writeTo="" final="true" />

<logger name="BluePrism.AutomateUI.*" minlevel="Debug" maxLevel="Fatal" writeTo="" final="true" />

<logger name="*" minlevel="Debug" writeTo="app-logfile" />

配置故障排除

NLog 旨在无提示故障,而不是由于记录过程中遇到错误而关闭您的应用程序。这会使用户难以看到为什么您的日志记录配置不起作用。

潜在问题包括:

  • 创建 Windows 事件日志和来源需要提升权限
  • 文本文件记录需要目标目录的权限

标准 XML 配置中有一些诊断选项非常有用:

  • 在标准配置中找到 throwExceptions="false" 属性并将值修改为 "true" 以启用任何可能显示配置错误的日志记录异常。
  • 您还可以启用 NLog 的内部日志记录。在标准配置中,此项默认关闭,但可以通过编辑以下属性启用:internalLogLevel="Off" internalLogFile="C:\temp\nlog-internal.log"。