从SharePoint记录到文本文件

时间:2010-06-10 21:15:21

标签: c# .net sharepoint logging sharepoint-2007

我正在尝试调试安装在客户端SharePoint实例上的webpart。我想要一个快速简单的日志记录功能,所以我想到将消息写入临时目录中的文本文件。 SharePoint似乎不喜欢它,那么我的选择是什么?

4 个答案:

答案 0 :(得分:1)

如果您正在写入临时目录,则需要提供运行SharePoint IIS应用程序的IIS应用程序池的文件(如果存在)或目录权限。

答案 1 :(得分:1)

在sharepoint中自定义日志记录的方法很少 -

  1. 使用SPDiagnosticsService - 您可以通过SPDiagnosticsService类写入ULS。

  2. 利用diagnostics.asmx网络服务 -

    raw_token, hashed_token = Devise.token_generator.generate(User, :reset_password_token)
    self.reset_password_token = hashed_token
    self.reset_password_sent_at = Time.now.utc
    self.password = Devise.friendly_token.first(8)
    self.save
    UserMailer.add_to_website(course, self, raw_token).deliver_later
    

    有关diagnostics.asmx用法的更多详细信息,请参阅以下链接 -

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

  3. 有关日志记录的更多详细信息,请参阅以下链接 -

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

    不要使用

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

    根据Microsoft文档 - LogString保留供内部使用,不能直接在您的代码中使用。

答案 2 :(得分:0)

尝试像log4net这样的日志框架,或者写一个小的日志框架写入外部数据库,如果你想留在sharepoint中,你也可以使用列表来记录

答案 3 :(得分:0)

我猜这是SharePoint阻止你的权限问题(可能并没有告诉你它)。当您尝试写入服务器上的文本文件时,您需要具有提升的权限才能执行此操作。您可以使用SPSecurity.RunWithElevatedPrivileges完成此操作。如果您只想要一个简单的小代码解决方案,那就像下面这样。

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