[SharePoint 2010]使用Correlation ID快速查找错误信息
不管是作为一名开发人员还是IT管理人员在与SharePoint朝夕相处的日子里,最头疼的工作可能就要算是Trouble Shooting了,不论代码写的多么的好,整体架构设计的多么完善,错误总是难以避免的。在SP 2010中微软在错误信息以及日志上带给我们许多新的功能,各人认为其中最吸引人的功能就要算是当页面抛出错误信息时所获得的这个Correlation ID了,有了它我们就可以很快速和方便的定位到SharePoint日志中的错误信息了,在Trouble Shooting时,找到正确的错误信息,是顺利解决问题的第一步,也是关键性的一步。下面我将为各位看官介绍一下怎样使用Correlation ID查找错误信息。
什么是Correlation ID呢?
在SharePoint 2010中Correlation ID就是一串GUID,在发生错误的时候可以通过它在日志中查找到该错误的详细信息。
在SP 2010里,每一个request都会有一个Correlation ID,所以如果在一个request进程中出现错误的话,使用Correlation ID来查找错误信息是最好的方法。
先来看一个SP 2010里的错误信息画面,不知道各位是不是都见到过这种错误信息画面,如果还没见过,相信我,你会见到的。
通过Correlation ID搜索错误信息
假设现在我们的SharePoint站点抛出了一个错误,然后我们想查看这个错误的具体信息,最笨的方法当然就是去日志中一条条的找了,但这显然不符合这篇文章的标题,那么应该怎么做呢?下面这两种方法就将帮助我们快速的定位错误信息。
使用PowerShell通过Correlation ID在SharePoint日志中查找详细的错误信息
一个最简单与快速的方法就是通过PowerShell命令来完成这项工作。在SP 2010中已经可以使用PowerShell来管理我们的SharePoint了,通过下面这条命令就可以通过Correlation ID获得具体的错误信息了。(将GUID替换成报错画面中的GUID)
get-splogevent | ?{$_Correlation -eq "<GUID>" }
这条命令会显示我们所要查找的错误的详细信息,就像下面这张图一样。
现在这些信息还是有些多,有一些作用不是很大的信息我们并不关注,例如EventID、Level等等,这时我们可以试试下面这条命令。
get-splogevent | ?{$_.Correlation -eq "<GUID>"} | select Area, Category, Level, EventID, Message | Format-List
这条命令会带给我们一个更加友好的详细错误信息画面。
最后,假如想把这条信息保存下来,则只需要在上面那条命令的结尾处加上“> C:\Error.log”这条命令就行了。
get-splogevent | ?{$_.Correlation -eq "<GUID>"} | select Area, Category, Level, EventID, Message | Format-List > C:\Error.log
在数据库中通过Correlation ID查找错误信息
除了使用PowerShell命令来查找错误信息以外,另外一个比较简单的方法是直接在数据库中查找你所需要的错误信息。在日志数据库中,一般叫做WSS_Logging,在这个数据库中有一个名为ULSTraceLog的视图,在这个视图里可以查找到详细的错误信息。
select [RowCreatedTime], [ProcessName], [Area], [Category], EventID, [Message] from [WSS_UsageApplication].[dbo].[ULSTraceLog] where CorrelationId=< pre>'B4BBAC41-27C7-4B3A-AE33-4192B6C1E2C5'
例如,我们可以使用上面这条SQL语句来查找CorrelationID为'B4BBAC41-27C7-4B3A-AE33-4192B6C1E2C5'的错误信息。
使用CorrelationID我们可以轻松的跟踪SP 2010中的错误,这无疑将大大的减少我们的工作难度,只需记下CorrelationID,我们就可以很容易的找到具体的错误是什么了。