Sharepoint学习笔记—Debug&TroubleShooting--Correlation ID的使用
Correlation ID就是每次请求SharePoint的Web服务器时自动生成的GUID,在我们的Sharepoin网站发生错误的时候,我们可以通过它在日志中查找到该错误的详细信息。它就是“犯罪份子”在现场留下的“指纹”。因此,它对我们跟踪调试Sharepoint具有非常重要的作用。
一、如何获取到Correlation ID。
一般而言,我们可以从Sharepoint网站的错误页面上看到报错信息中包含的CorrelationID,如下图 。
当然,我们也可以编写代码来主动获取CorrelationID,并提取附加信息发布或保存到我们指定的地方,参见Sharepoint学习笔记—Debug--使用代码获取当前Request的CorrelationID
我们还可以从Developer Dashboard那里得到Correlation ID,如下图:
二、在PowerShell中使用CorrelationID
使用PowerShell通过Correlation ID在SharePoint日志中查找详细的错误信息,这种方式的优点就是它可以直接对ULS文件进行处理,但它最明显的缺点就是:你无法使用它来查找同一Farm上的其它Servers中的日志,也无法使用它来访问log数据库。通常的作法是使用Merge-SPLogFile命令(http://65.55.20.225/zh-cn/library/ff607721.aspx)或New-SPLogFile命令(http://65.55.20.225/zh-cn/library/ff607615.aspx)先合并Farm中不同Server上的跟踪日志条目,然后再针对合并后的日志文档进行分析(New-SPLogFile命令的作用是先中止当前正在记录的Log文档,重新开始创建一个新的Log文档,这样可以帮助我们缩小跟踪的范围)。
当然,如果你没有对Sharepoin进行ULS的配置,Sharepoint就不会把log信息保存到数据库。如下图结合此文(Sharepoint学习笔记—Debug--寻找 WSS_Logging下的ULSTraceLog)对ULS进行配置,
下图就是配置Sharepoint Trace Log的界面,在此界面上选择要把哪些Event事件写入到log中
通过此处进入配置界面
通过此界面进行设置
如果有些Sharepoint环境,没有创建ULS数据库视图(ULSTraceLog),你就只有通过ULSViewer或Powershell来帮助你进行分析了。
下面是一些常用的提取信息的方法:
1.根据CorrelationID提取Log记录
1.1在全部Log记录中提取
1.2从10分钟前产生的Log记录中提取
1.3把提取的log记录输出到指定文件中
2.其它Get-SPLogEvent常见用法
1.1 提取过去10分钟,Level为Hight的记录
1.2 提取过去10分钟,Level为Hight的记录,只提取前25项,并按它们的category进行排序
1.3查看过去半个小时里,我们的Timer Jobs都发生了什么事情
1.4提取给定时间区间内的记录
1.5提取前10条和最后2条Events记录
关于get-SPLogEvent命令,再进一步的用法请参见(http://technet.microsoft.com/zh-cn/library/ff607589.aspx)
三、在ULSViewer中使用CorrelationID
你可以在ULSViewer中(请从此处下载)使用CorrelationID来设置Filter,从而帮助你快速的定位错误信息。如图:
四、在日志数据库(ULSTraceLog)中,使用CorrelationID
如果你作了适当的设置(请参见 Sharepoint学习笔记—Debug--寻找 WSS_Logging下的ULSTraceLog),你的Sharepoint就会在WSS_Logging的数据库中创建一个名为ULSTraceLog的视图,在这个视图里可以查找到详细的错误信息。使用此方法的好处是:在一个Farm中的所有Server上的event log都要写入到此数据库中.
首先我们观查一下这个数据库WSS_Logging中的数据表如下图(只截取了部分作为说明)
我们可以看到,针对这些数据表都跟有 "Partition + 数字" 作为后缀,事实上,它们对应的就是一个月取31天的每一天的记录。
我们再打开ULSTraceLog视图设计看看其代码,也可以看出,它就是取上述相关Partition表的Union集(如下图)。
有了CorrelationID,我们可以使用如下SQL命令来提取我们想要的信息.
from dbo.ULSTraceLog
where CorrelationId='f3449978-ebd5-4491-98cb-0c7861b0237f'
结果如下:
五、使用第三方的CorrelationID Query Feature
网上有人提供了第三方的Feature来帮助你在整个Sharepoint Farm中对correlation ID进行查询,你可以从 SharePoint 2010 Query Correlation ID Central Admin Page 下载。使用Add-SPSolution 命令进行安装。
然后在Administrator Center中进行部署。部署成功后请到Monitor中去找到Logging,如下图
进入此功能,输入你的关注的CorrelationID,就可以查询其信息了。