2010-06-10 31 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保留供内部使用,不适合直接在代码中使用。