本文介绍了在不停止自定义计时器作业内执行的情况下记录异常或错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这可能是一个愚蠢的问题,正在创建具有多个try catch循环的计时器作业,该循环遍历多个doc库,splists,groups,项目级别权限等.[SP 201 ON-PREM ,自定义计时器作业,项目级别权限]

may be this is a silly question, am creating a timer job  with multiple try catch loops that iterates through multiple doc libs , splists, groups , item level permissions etc. [  SP 201 ON-PREM, CUSTOM TIMER JOB, item level permissions ]

如何确保如果发生错误,它将错误记录在某个地方并继续执行?

how to ensure that, if an erorrs occurs , it logs the error in somewhere and continue execution ?

下面是我的方法之一:

尝试
                                        {
                                            //使用这个singleProjDocLibItem [projectcode]并返回到projectcontrollist并设置值 如ilpfrozen

                                           字符串strProjCodeFromProjDocLibforUpdateinPCFList = singleProjDocLibItemPCF ["ProjectCode"].ToString();
                                            SPList objListProjControlListILP = objspweb.Lists.TryGetList(" ProjectControl");

                                           字符串strProjCtrlListUpdateQueryinPCFLIst =< Where<< And>< IsNotNull>< FieldRef Name ='ProjectCode'/></IsNotNull>< Eq>< FieldRef Name ='ProjectCode'/>< Value Type ='Text'>" + strProjCodeFromProjDocLibforUpdateinPCFList +</Value></Eq></And</Where>";
                                            SPQuery objQueryforProjControlList = new SPQuery();
                                            objQueryforProjControlList.Query = strProjCtrlListUpdateQueryinPCFLIst;
                                            SPListItemCollection oListItemCollProjDocLibforUpdateinPCFList = objListProjControlListILP.GetItems(objQueryforProjControlList);

                                            if(oListItemCollProjDocLibforUpdateinPCFList!= null&& oListItemCollProjDocLibforUpdateinPCFList.Count > 0)
                                            {
                                                foreach(oListItemCollProjDocLibforUpdateinPCFList中的SPListItem singleProjectControlListItem)
                                                {
                                                    singleProjectControlListItem ["ILPPCF"] =冻结的ILP";
                                                    singleProjectControlListItem.Update();
                                                }
                                            }
                                        }
                                       赶上{}

try
                                        {
                                            //take this singleProjDocLibItem[projectcode] and traverse back to projectcontrollist and set the value as ilpfrozen

                                            string strProjCodeFromProjDocLibforUpdateinPCFList = singleProjDocLibItemPCF["ProjectCode"].ToString();
                                            SPList objListProjControlListILP = objspweb.Lists.TryGetList("ProjectControl");

                                            string strProjCtrlListUpdateQueryinPCFLIst = "<Where><And><IsNotNull><FieldRef Name='ProjectCode' /></IsNotNull><Eq><FieldRef Name='ProjectCode' /><Value Type='Text'>" + strProjCodeFromProjDocLibforUpdateinPCFList + "</Value></Eq></And></Where>";
                                            SPQuery objQueryforProjControlList = new SPQuery();
                                            objQueryforProjControlList.Query = strProjCtrlListUpdateQueryinPCFLIst;
                                            SPListItemCollection oListItemCollProjDocLibforUpdateinPCFList = objListProjControlListILP.GetItems(objQueryforProjControlList);

                                            if (oListItemCollProjDocLibforUpdateinPCFList != null && oListItemCollProjDocLibforUpdateinPCFList.Count > 0)
                                            {
                                                foreach (SPListItem singleProjectControlListItem in oListItemCollProjDocLibforUpdateinPCFList)
                                                {
                                                    singleProjectControlListItem["ILPPCF"] = "ILP Frozen";
                                                    singleProjectControlListItem.Update();
                                                }
                                            }
                                        }
                                        catch { }

目前我正在与  合作             仅捕获{},因此不会处理LOGGING,我的疑问是如何在[ULS或其他地方]记录此错误.

currently i am doing with                 catch { }  only, so  NO LOGGING is handled, my doubt is how to log this error somehwere[ ULS or somewhere else ].

推荐答案

根据SharePoint最佳实践,您应该始终在ULS日志中记录自定义错误.

As per SharePoint Best Practices you should always Log you Custom Errors in ULS Logs.

下面的链接可以帮助您了解如何在ULS中记录自定义错误.

below Link can help you out how to Log custom Errors in ULS.

https://sharepoint.stackexchange.com/questions/100219 /write-to-sharepoint-2013-uls-logs-以编程方式

此致

Gaurav


这篇关于在不停止自定义计时器作业内执行的情况下记录异常或错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-27 06:47