在 SharePoint Server 中查看诊断日志

适用于:yes-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

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

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

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

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

  1. 确认您具有以下成员身份:
  • SQL Server 实例上的 securityadmin 固定服务器角色。

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

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

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

    注意

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

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

  2. 在 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

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

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

  • 依据任何列排序数据。

  • 查看组中的数据。

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

  • 搜索任意字符串数据。

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

注意

[!注意] Out-GridView cmdlet 不能与使用 Format 动词的 cmdlet 一起使用。 Out-GridView cmdlet 用于接收对象,而使用 Format 动词的 cmdlet 只返回格式化文本。 > 可以使用 Where-Object cmdlet 查看数据的子集,该 cmdlet 筛选结果并将其传递给 Out-GridView 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

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

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

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

  2. To search for a specific string, type the string in the Filter box. Search is performed over all columns and rows. To clear the search, click X.

  3. To filter data on only one criterion, type the following in the Search box: <property name>:<value>. For example, to search for all log entries raised by SharePoint Foundation 2013, type the following: Area:SharePoint Foundation. To clear the filter, click X.

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

  5. 单击"添加条件"按钮。

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

  7. Click contains to change to a different filter method. The methods that are available are contains, does not contain, starts with, equals, does not equal, ends with, is empty, and is not empty.

  8. 在文本框中键入值。

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

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

  11. 若要清除特定筛选器,请单击"X"按钮。

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

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

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

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

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

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

有关详细信息,请参阅 Out-GridViewOut-GridView 重新访问