在 SharePoint Server 中查看诊断日志

 

**上一次修改主题:**2018-03-12

**摘要:**了解如何使用 Windows PowerShell 显示和筛选日志事件,以及如何使用 Out-GridView cmdlet 查看和导出诊断日志。

可以在 SharePoint Server 中使用统一日志记录服务 (ULS) 日志中的数据来解决服务器场中的问题。根据日志记录设置,ULS 日志可收集不同级别的数据。可使用 PowerShell 筛选数据,以各种方式显示,并将数据输出到数据网格,通过该数据网格,可以筛选、排序、分组数据以及将数据导出到 Excel 2016。

本文内容:

使用 Windows PowerShell 查看和筛选日志事件

可使用 PowerShell 查看和筛选日志事件。无法使用 SharePoint 管理中心网站查看或筛选日志事件。

使用 Windows PowerShell 查看和筛选日志事件的具体步骤

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

    • 要更新的所有数据库上的 db_owner 固定数据库角色。

    • 运行 PowerShell cmdlet 的服务器上的 Administrators 组。

    管理员可以使用 Add-SPShellAdmin cmdlet 授予使用权限。

    备注

    如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。有关 PowerShell 权限的其他信息,请参阅 Add-SPShellAdmin

  2. 转到“SharePoint 命令行管理程序”。

  3. 在 PowerShell 命令提示符处,键入以下命令:

    • 所有跟踪事件:

      Get-SPLogEvent
      
    • 按级别:

      Get-SPLogEvent | Where-Object {$_.Level -eq "Information" }
      
    • 按区域:

      Get-SPLogEvent | Where-Object {$_.Area -eq <Area>}
      

      其中 <Area>Area 属性的值。

    • 按类别:

      Get-SPLogEvent | Where-Object {$_.Category -eq <Category>
      

      其中 <Category>Category 属性的值。

    • 按事件 ID:

      Get-SPLogEvent | Where-Object {$_.EventID -eq <EventID>}
      

      其中 <EventID>EventID 属性的值。

    • 按消息文本:

      Get-SPLogEvent | Where-Object {$_.Message -like "<string>"}
      

      其中 <string> 是在事件消息中找到的字符串。

    • 按过程:

      Get-SPLogEvent | Where-Object {$_.Process -like "<Process>"}
      

      其中 <Process>Process 属性的值。

    默认情况下,该命令会从默认 ULS 日志文件夹中检索数据。若要查看和筛选网络上的共享文件夹上的跟踪事件,请使用 Get-SPLogEvent cmdlet 的 Directory 参数。

    若要查看有关每个跟踪事件的详细信息,请在命令末尾处使用 Format-List。例如,

    Get-SPLogEvent | Where-Object {$_.Area -eq "SharePoint Foundation"} | Format-List
    

有关详细信息,请参阅 Get-SPLogEvent

使用 Windows PowerShell Out-GridView cmdlet 查看和导出诊断日志

PowerShell 提供了一个强大且易于使用的功能,可在单独窗口的可筛选、可搜索数据网格中显示 Microsoft PowerShell 命令生成的表格数据。可使用此网格来查看日志事件,以及对数据执行下列操作:

  • 依据任何列排序数据。

  • 查看组中的数据。

  • 依据级别、区域、类别、消息、事件 ID 或时间戳来筛选数据。

  • 搜索任意字符串数据。

  • 将原始或已排序或已筛选数据导出到电子表格。

备注

Out-GridView cmdlet 不能与使用 Format 动词的 cmdlet 一起使用。Out-GridView cmdlet 用于接收对象,而使用 Format 动词的 cmdlet 只返回格式化文本。
可以使用筛选并将结果传递给 Out-GridView cmdlet 的 Where-Object cmdlet 来查看数据子集。例如,Get-SPLogEvent | Where-Object {$_.Area -eq "SharePoint Foundation"} | Out-GridView
如果网格显示的行超过几百,则运行速度可能会很慢,尤其是当执行复杂筛选操作时。为了提高性能,请将数据导出到 Excel 2016。

使用 Windows PowerShell 查看和筛选诊断日志的具体步骤

  1. 确认您具有以下成员身份:

    • SQL Server 实例上的 securityadmin 固定服务器角色。

    • 要更新的所有数据库上的 db_owner 固定数据库角色。

    • 运行 PowerShell cmdlet 的服务器上的 Administrators 组。

    管理员可以使用 Add-SPShellAdmin cmdlet 授予使用权限。

    备注

    如果您不具有这些权限,请联系您的安装管理员或 SQL Server 管理员来请求权限。有关 PowerShell 权限的其他信息,请参阅 Add-SPShellAdmin

  2. 转到“SharePoint 命令行管理程序”。

  3. 在 PowerShell 命令提示符处,键入以下命令:

    Get-SPLogEvent | Out-GridView
    
  4. 若要对列进行排序,请单击列标题。

  5. 若要搜索特定字符串,请在“筛选”框中键入该字符串。将在所有列和所有行中执行搜索。若要清除搜索,请单击“X”。

  6. 若要仅依据一个条件筛选数据,请在“搜索”框中键入以下内容:<property name>:<value>。例如,若要搜索 SharePoint Foundation 2013 引发的所有日志项,请键入以下内容:Area:SharePoint Foundation。若要清除筛选器,请单击“X”。

  7. 若要使用多个条件或使用具有“包含、起始为、结束于”的条件或其他方法筛选数据,请执行下列操作:

    1. 单击“添加条件”按钮。

    2. 单击要对其进行筛选的属性所对应的复选框,然后单击“添加”。

    3. 单击“包含”可改用其他筛选方法。可用的方法有“包含”、“不包含”、“起始为”、“等于”、“不等于”、“结束于”、“为空”和“非空”。

    4. 在文本框中键入值。

    5. 对在步骤"b"中选择的每个属性重复步骤"c"和"d"。

    6. 当指定所有筛选条件时,将显示满足条件的数据。

    7. 若要清除特定筛选器,请单击“X”按钮。

    8. 若要清除所有筛选器,请折叠查询视图并单击“全部清除”按钮。

将网格数据导出到电子表格的具体步骤

  1. 选择要导出的行。按住 Shift 同时拖动鼠标可选择多个行,按住 Ctrl 同时单击可选择特定行,按 Ctrl+A 可选择所有行。

    还可在将数据复制到电子表格前筛选和排序结果。在排序或筛选数据时,只会复制生成的可视数据。

  2. 使用 Ctrl+C 复制所选行。

  3. 打开电子表格工作簿页,然后使用 Ctrl+V 将复制的行粘贴到其中。

有关详细信息,请参阅 Out-GridView (https://go.microsoft.com/fwlink/p/?LinkId=181248) 和再次访问 Out-GridView (https://go.microsoft.com/fwlink/p/?LinkId=181249)。