博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Sharepoint学习笔记—Debug&TroubleShooting--Correlation ID的使用
阅读量:6547 次
发布时间:2019-06-24

本文共 3012 字,大约阅读时间需要 10 分钟。

   Correlation ID就是每次请求SharePoint的Web服务器时自动生成的GUID,在我们的Sharepoin网站发生错误的时候,我们可以通过它在日志中查找到该错误的详细信息。它就是“犯罪份子”在现场留下的“指纹”。因此,它对我们跟踪调试Sharepoint具有非常重要的作用。

 一、如何获取到Correlation ID
  一般而言,我们可以从Sharepoint网站的错误页面上看到报错信息中包含的CorrelationID,如下图 。

          

  当然,我们也可以编写代码来主动获取CorrelationID,并提取附加信息发布或保存到我们指定的地方,参见

           

 

 我们还可以从Developer Dashboard那里得到Correlation ID,如下图:

 

 
 二、在PowerShell中使用CorrelationID
  使用PowerShell通过Correlation ID在SharePoint日志中查找详细的错误信息,这种方式的优点就是它可以直接对ULS文件进行处理,但它最明显的缺点就是:你无法使用它来查找同一Farm上的其它Servers中的日志,也无法使用它来访问log数据库。通常的作法是使用Merge-SPLogFile命令()或New-SPLogFile命令()先合并Farm中不同Server上的跟踪日志条目,然后再针对合并后的日志文档进行分析(New-SPLogFile命令的作用是先中止当前正在记录的Log文档,重新开始创建一个新的Log文档,这样可以帮助我们缩小跟踪的范围)。
   当然,如果你没有对Sharepoin进行ULS的配置,Sharepoint就不会把log信息保存到数据库。如下图结合此文()对ULS进行配置,

   下图就是配置Sharepoint Trace Log的界面,在此界面上选择要把哪些Event事件写入到log中

   通过此处进入配置界面

  

 

   通过此界面进行设置

      

    如果有些Sharepoint环境,没有创建ULS数据库视图(ULSTraceLog),你就只有通过ULSViewer或Powershell来帮助你进行分析了。

 

   下面是一些常用的提取信息的方法:

   1.根据CorrelationID提取Log记录   
    1.1在全部Log记录中提取 

Get-SPLogEvent |Where{$_.Correlation -eq 
"
a53ba71b-4231-4222-ac7e-4535dcf0c534
"} | Format-Table Category, Message -Autosize

    1.2从10分钟前产生的Log记录中提取 

Get-SPLogEvent -StartTime (Get-Date).addminutes(-
10) | Where-Object    {$_.correlation -eq “a53ba71b-
4231-
4222-ac7e-4535dcf0c534″}

   1.3把提取的log记录输出到指定文件中

Get-SPLogEvent| ?{$_.Correlation -eq 
"
a53ba71b-4231-4222-ac7e-4535dcf0c534
"} | 
select Area, Category, Level, EventID, Message | Format-List > D:\MyError.log

    

   2.其它Get-SPLogEvent常见用法 

   1.1 提取过去10分钟,Level为Hight的记录

get-SPLogEvent -StartTime (
get-date).AddMinutes(-
10) | ?{$_.level -eq “high”}

  1.2 提取过去10分钟,Level为Hight的记录,只提取前25项,并按它们的category进行排序

get-SPLogEvent -StartTime (
get-date).AddMinutes(-
10) | ?{$_.level -eq “high”} | 
select correlation, category -first 
25 | sort category

  1.3查看过去半个小时里,我们的Timer Jobs都发生了什么事情 

get-SPLogEvent -StartTime (
get-date).AddMinutes(-
30) -minimumlevel “Medium” | ?{$_.Category -eq “Timer”}

  1.4提取给定时间区间内的记录

Get-SPLogEvent -StartTime 
"
12/04/2007 17:00
" -EndTime 
"
12/04/2007 18:00
"

  1.5提取前10条和最后2条Events记录

Get-SPLogEvent | 
select –first 
10 –last 
2

 

  关于get-SPLogEvent命令,再进一步的用法请参见()

 

 三、在ULSViewer中使用CorrelationID

  你可以在ULSViewer中(请从下载)使用CorrelationID来设置Filter,从而帮助你快速的定位错误信息。如图:

 

 

 四、在日志数据库(ULSTraceLog)中,使用CorrelationID

   如果你作了适当的设置(请参见 ),你的Sharepoint就会在WSS_Logging的数据库中创建一个名为ULSTraceLog的视图,在这个视图里可以查找到详细的错误信息。使用此方法的好处是:在一个Farm中的所有Server上的event log都要写入到此数据库中.
  首先我们观查一下这个数据库WSS_Logging中的数据表如下图(只截取了部分作为说明)

      

  我们可以看到,针对这些数据表都跟有 "Partition + 数字" 作为后缀,事实上,它们对应的就是一个月取31天的每一天的记录。

  我们再打开ULSTraceLog视图设计看看其代码,也可以看出,它就是取上述相关Partition表的Union集(如下图)。

           

  有了CorrelationID,我们可以使用如下SQL命令来提取我们想要的信息.

select     CorrelationId,RowCreatedTime,  ProcessName,  Area, Category,  EventID,  Message 
 
from  dbo.ULSTraceLog
where  CorrelationId=
'
f3449978-ebd5-4491-98cb-0c7861b0237f
'

  结果如下:

 

 五、使用第三方的CorrelationID Query Feature

  网上有人提供了第三方的Feature来帮助你在整个Sharepoint Farm中对correlation ID进行查询,你可以从  下载。使用Add-SPSolution 命令进行安装。

Add-SPSolution   D:\SPShare\TranAddInWsp\CorrelationIdPage-Sharepoint2010.wsp

然后在Administrator Center中进行部署。部署成功后请到Monitor中去找到Logging,如下图

 

进入此功能,输入你的关注的CorrelationID,就可以查询其信息了。

 

 

 

转载地址:http://hirdo.baihongyu.com/

你可能感兴趣的文章
登录内网账号后,连接不上内网网址
查看>>
安装 MariaDB
查看>>
java 为啥变量名前要加个m?
查看>>
探索Android中的Parcel机制(上)
查看>>
C#开发微信门户及应用(5)--用户分组信息管理
查看>>
怎样实现前端裁剪上传图片功能
查看>>
ffmpeg+SDL2实现的视频播放器「退出、暂停、播放」
查看>>
2011/7/3 第二次评审
查看>>
tar解压
查看>>
inheritprototype原型继承封装及综合继承最简实例
查看>>
【磁耦隔离接口转换器】系列产品选型指南
查看>>
Apriori 关联算法学习
查看>>
MVPArms官方首发一键生成组件化,体验纯傻瓜式组件化开发
查看>>
Log4j_学习_00_资源帖
查看>>
制作iso镜像U盘自动化安装linux系统
查看>>
JSLint的使用
查看>>
命令行常用命令--软连接
查看>>
HTTP POST GET 本质区别详解
查看>>
MD5加密
查看>>
ant
查看>>