添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

<target xsi:type="EventLog" name="eventLog" layout="${message}" source="Orchestrator" log="Application" />

<logger name="*" minlevel="Info" writeTo="eventLog" />

作业计划程序 生成的日志具有单独的目标和记录器:

<target xsi:type="EventLog" name="eventLogQuartz" layout="[Quartz] ${message} ${onexception: ${exception:format=tostring}}" source="Orchestrator" log="Application" />

<logger name="Orchestrator.Quartz.*" minlevel="Info" writeTo="eventLogQuartz" />

  • 无法创建 Quartz 作业

    <target xsi:type="EventLog" name="businessExceptionEventLog" layout="${message}${onexception:${exception:format=tostring:maxInnerExceptionLevel=5:innerFormat=tostring}}" source="Orchestrator.BusinessException" log="Application" />

    <logger name="BusinessException.*" minlevel="Info" writeTo="businessExceptionEventLog" final="true" />

    在以下情况下,这些类型的错误消息会记录在事件查看器中:

    <target xsi:type="Database" name="database" connectionString="${ui-connection-strings:item=Default}" keepConnection="true">
     <commandText>
      insert into dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage)
      values (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage)
     </commandText>
      <parameter name="@organizationUnitId" layout="${event-properties:item=organizationUnitId}" />
      <parameter name="@tenantId" layout="${event-properties:item=tenantId}" />
      <parameter name="@timeStamp" layout="${date}" />
      <parameter name="@level" layout="${event-properties:item=levelOrdinal}" />
      <parameter name="@windowsIdentity" layout="${event-properties:item=windowsIdentity}" />
      <parameter name="@processName" layout="${event-properties:item=processName}" />
      <parameter name="@jobId" layout="${event-properties:item=jobId}" />
      <parameter name="@message" layout="${message}" />
      <parameter name="@rawMessage" layout="${event-properties:item=rawMessage}" />
    </target>
     <logger name="Robot.*" writeTo="database" final="true" /><target xsi:type="Database" name="database" connectionString="${ui-connection-strings:item=Default}" keepConnection="true">
     <commandText>
      insert into dbo.Logs (OrganizationUnitId, TenantId, TimeStamp, Level, WindowsIdentity, ProcessName, JobKey, Message, RawMessage)
      values (@organizationUnitId, @tenantId, @timeStamp, @level, @windowsIdentity, @processName, @jobId, @message, @rawMessage)
     </commandText>
      <parameter name="@organizationUnitId" layout="${event-properties:item=organizationUnitId}" />
      <parameter name="@tenantId" layout="${event-properties:item=tenantId}" />
      <parameter name="@timeStamp" layout="${date}" />
      <parameter name="@level" layout="${event-properties:item=levelOrdinal}" />
      <parameter name="@windowsIdentity" layout="${event-properties:item=windowsIdentity}" />
      <parameter name="@processName" layout="${event-properties:item=processName}" />
      <parameter name="@jobId" layout="${event-properties:item=jobId}" />
      <parameter name="@message" layout="${message}" />
      <parameter name="@rawMessage" layout="${event-properties:item=rawMessage}" />
    </target>
     <logger name="Robot.*" writeTo="database" final="true" />
    其他目标可以通过配置 UiPath.Orchestrator.dll.config 文件添加到日志中。可在 此处 找到可用目标列表。

    升级 Orchestrator 时,系统会删除并重新创建 Nlog 目标,如下所示:

  • 升级到 2022.4 后, Nlog 数据库目标将恢复为其默认值。
  • 升级到 2022.10 后, Nlog 数据库目标将被删除,并替换为新的和改进的目标。
  • CREATE NONCLUSTERED INDEX [IX_Search] ON [dbo].[Logs]
    [TenantId] ASC,
    [OrganizationUnitId] ASC,
    [Level] ASC,
    [TimeStamp] DESC
    )WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
    GOCREATE NONCLUSTERED INDEX [IX_Search] ON [dbo].[Logs]
    [TenantId] ASC,
    [OrganizationUnitId] ASC,
    [Level] ASC,
    [TimeStamp] DESC
    )WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
                      
    对于低于 Elasticsearch 8.0 的版本:
    <target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
    <target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
    </target>
    </target><target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
    <target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
    </target>
    </target>
    对于 Elasticsearch 8.0 及更高版本:
    <target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
    <target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="" enableApiVersioningHeader="true" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
    </target>
    </target><target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
    <target xsi:type="ElasticSearch" name="robotElastic" uri="uritoelasticsearchnode" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="" enableApiVersioningHeader="true" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,organizationId,indexName" />
    </target>
    </target>

    为了使 Elasticsearch 8.0 及更高版本正常工作,请按如下方式设置这些参数:

  • documentType 为空。
  • enableApiVersioningHeader 设置为 true
    选项 2:如果将 Logs.RobotLogs.ReadTarget 设置为 NLog 目标(例如 robotElasticBuffer),并且未指定 Logs.Elasticsearch.Nodes 设置,请通过添加以下内容来配置目标: requireAuth="true" username="XPACKuser" password="p@$$w0rd"。 确保这些参数值与步骤 1 中的 Elasticsearch 设置匹配。

    有关这些参数的更多信息,请参阅 UiPath.Orchestrator.dll.config 页面。

    有关配置示例,请参见以下内容:

    <target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
            <target xsi:type="ElasticSearch" name="robotElastic" uri="" requireAuth="true" username="XPACKusername" password="p@$$w0rd" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" />
          </target><target name="robotElasticBuffer" xsi:type="BufferingWrapper" flushTimeout="5000">
            <target xsi:type="ElasticSearch" name="robotElastic" uri="" requireAuth="true" username="XPACKusername" password="p@$$w0rd" index="${event-properties:item=indexName}-${date:format=yyyy.MM}" documentType="logEvent" includeAllProperties="true" layout="${message}" excludedProperties="agentSessionId,tenantId,indexName" />
          </target>
  • 选项 3:如果 Logs.RobotLogs.ReadTarget 设置为 NLog 目标(例如 robotElasticBuffer),并且通过 Logs.Elasticsearch.Nodes 设置指定了 Elasticsearch 节点,则需要显式配置它(因为它会覆盖 NLog 目标设置) ,并确保同时添加以下内容: requireAuth="true" username="XPACKuser" password="p@$$w0rd"。 确保这些参数值与步骤 1 中的 Elasticsearch 设置匹配。
  • 更新 Orchestrator 的UiPath.Orchestrator.dll.config文件中的以下参数,以反映您在步骤 1 中选择的设置。
  • Logs.Elasticsearch.TlsEnabled = ”true” - 默认情况下,此参数设置为true ,并确保启用 TLC (HTTPS)。
  • Logs.Elasticsearch.OAuthEnabled = ”true” - 默认情况下,此参数设置为 false。 有关更多信息,请参阅 Logs.Elasticsearch.OAuthEnabled
    Logs.Elasticsearch.OAuthExpireInSeconds = ”1200” - 此参数是可选参数,除非在 Elasticsearch xpack.security.authc.token.timeout 设置中更改了 1200 的默认值。 此参数的值必须与 Elasticsearch 配置中的值相同。 有关更多信息,请参阅 Logs.Elasticsearch.OAuthExpireInSeconds
    注意: 前两个步骤可帮助您配置基于令牌的身份验证机制以读取日志。 如果您使用 NLog,则需要执行其他步骤。
  • 要为 Nlog 启用 OAuth2,请确保在 Orchestrator 的 UiPath.Orchestrator.dll.config 文件中也配置以下参数。 请注意,您必须填写 用户名和密码 以在 Elasticsearch 中进行身份验证,因为初始令牌是根据这些凭据生成的。
    OAuthEnabled = “true” - 默认情况下,它设置为 false。有关更多信息,请参阅 UiPath.Orchestrator.dll.config 页面。
    重要提示: 如果 Logs.RobotLogs.ReadTarget 设置为 NLog 目标(例如 robotElasticBuffer),并且未指定 Logs.Elasticsearch.Nodes 设置,则从 NLog 目标配置中填充 Logs.Elasticsearch.OAuthEnabled 。 相同的逻辑适用于用户名和密码。
  • API 密钥作为密码存储在 Azure 密钥保管库中。
  • 使用您的数据配置以下 Nlog 目标参数,从而在 Orchestrator 和允许检索密钥的密钥保险库之间创建连接:
    apiKeyEnabled="true"
    apiKeyProvider="AzureKeyVault"
    apiKeySecretName="<SecretName>"
    azureKeyVaultUri="<KeyVaultUri>"
    azureKeyVaultDirectoryId="<KeyVaultDirectoryId>"
    azureKeyVaultClientId="<KeyVaultClientId>"
    azureKeyVaultCertificateThumbprint="<KeyVaultCertificateThumbprint>"
    azureKeyVaultCertificateStoreLocation="CurrentUser/LocalMachine"apiKeyEnabled="true"
    apiKeyProvider="AzureKeyVault"
    apiKeySecretName="<SecretName>"
    azureKeyVaultUri="<KeyVaultUri>"
    azureKeyVaultDirectoryId="<KeyVaultDirectoryId>"
    azureKeyVaultClientId="<KeyVaultClientId>"
    azureKeyVaultCertificateThumbprint="<KeyVaultCertificateThumbprint>"
    azureKeyVaultCertificateStoreLocation="CurrentUser/LocalMachine"

    以下参数需要使用您的值进行编辑:

    <SecretName> - 您在密钥保险库中为 API 密钥设置的名称

    默认情况下,API 密钥不会过期,但您仍然可以选择为其设置过期日期。

    如果您的 API 密钥设置为过期,则必须在过期日期之前生成一个新密钥并将其存储在密钥保险库中,以确保 Orchestrator 始终可以检索有效密钥。

    Orchestrator 每 15 分钟从密钥保险库读取 API 密钥,因此这是传播新密钥之前可以预期的最大延迟量。

  •