2010-06-10 129 views
1

我試圖調試安裝在客戶端的SharePoint實例上的Web部件。我想要一個快速簡單的日誌記錄功能,所以我想將消息寫入臨時目錄中的文本文件。 SharePoint似乎不喜歡它,所以我的選擇是什麼?從SharePoint登錄到TextFile

+1

如果它沒有/不需要去一個文件,另一個選項是Debug.WriteLine(和Trace.WriteLine IIRC),然後使用debugview來查看輸出(最有可能適當地過濾) http: //technet.microsoft.com/en-us/sysinternals/bb896647.aspx – 2010-06-11 06:37:13

回答

0

我猜想,這是一個權限問題SharePoint阻止了你(並且可能不會告訴你它是這樣)。當您嘗試寫入服務器上的文本文件時,您需要提升權限才能執行此操作。您可以使用SPSecurity.RunWithElevatedPrivileges完成此操作。如果你只想要一個簡單的小代碼解決方案,就像下面這樣。

SPSecurity.RunWithElevatedPrivileges(delegate() { 
    using (StreamWriter sw = new StreamWriter(@"C:\log.txt")) 
    { 
     //log information here 
    } 
}); 
+0

嗯,這仍然沒有工作......它說SP沒有訪問C: – Prabhu 2010-06-10 22:04:22

+0

我最終使用了Microsoft.Office。 Server.Diagnostics.PortalLog.LogString – Prabhu 2010-06-10 22:21:18

+1

首先,如果您使用的是部分可信的Web部件,那麼這也取決於CAS權限。如果它在GAC中的升級將使用ApplicationPool的身份,這些身份在使用域服務帳戶進行設置時(即在服務器場環境中正確安裝時)可能無權訪問C驅動器的任意區域 – Ryan 2010-06-11 09:49:18

0

嘗試像log4net的日誌框架,或者寫一個小的日誌框架寫入到外部數據庫,你也可以用列表來記錄,如果你想留在裏面的SharePoint

1

如果你正在寫的臨時目錄,你需要給文件(如果存在的話),或在SharePoint IIS應用程序在其下運行IIS應用程序池的目錄權限。

1

有自定義日誌的幾種方法在SharePoint -

  1. 使用SPDiagnosticsService - 您可以寫信給通過SPDiagnosticsService類的ULS。

  2. 利用diagnostics.asmx Web服務 -

    SharePointDiagnostics SharePointDiagnosticsObject = new SharePointDiagnostics(); 
    SharePointDiagnosticsObject.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; 
    string Response = SharePointDiagnosticsObject.SendClientScriptErrorReport(message, file, line, client, stack, team, originalFile); 
    

    欲瞭解更多詳細信息的diagnostics.asmx參考以下鏈接的使用 -

    https://vivekkumar11432.wordpress.com/2016/09/23/how-to-do-logging-in-uls-from-csom-in-c/

有關記錄的更多詳細信息參考以下鏈接 -

http://www.codeproject.com/Articles/620996/Five-suggestions-to-implement-a-better-logging-in

不要使用

Microsoft.Office.Server.Diagnostics.PortalLog.LogString("Message"); 

根據微軟的文檔 - LogString保留供內部使用,不適合直接在代碼中使用。