我正在尝试调试安装在客户端SharePoint实例上的webpart。我想要一个快速简单的日志记录功能,所以我想到将消息写入临时目录中的文本文件。 SharePoint似乎不喜欢它,那么我的选择是什么?
答案 0 :(得分:1)
如果您正在写入临时目录,则需要提供运行SharePoint IIS应用程序的IIS应用程序池的文件(如果存在)或目录权限。
答案 1 :(得分:1)
在sharepoint中自定义日志记录的方法很少 -
使用SPDiagnosticsService - 您可以通过SPDiagnosticsService类写入ULS。
利用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/
有关日志记录的更多详细信息,请参阅以下链接 -
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
}
});