DotNetNuke和错误日志记录

DotNetNuke和错误日志记录,dotnetnuke,error-logging,Dotnetnuke,Error Logging,DotNetNuke是否提供任何内置的错误日志框架?我的客户端正在使用DotNetNuke,我没有看到全局错误日志框架。我看到下面的课程中有一些try/catch正在使用它们 namespace DotNetNuke.Services.Exceptions { [标准模块] 公共密封类例外 { 公共静态异常信息GetExceptionInfo(异常e); 公共静态无效日志异常(异常exc); 公共静态无效日志异常(ModuleLoadException exc); 公共静态无效日志异常(Page

DotNetNuke是否提供任何内置的错误日志框架?我的客户端正在使用DotNetNuke,我没有看到全局错误日志框架。我看到下面的课程中有一些try/catch正在使用它们

namespace DotNetNuke.Services.Exceptions
{
[标准模块]
公共密封类例外
{
公共静态异常信息GetExceptionInfo(异常e);
公共静态无效日志异常(异常exc);
公共静态无效日志异常(ModuleLoadException exc);
公共静态无效日志异常(PageLoadException exc);
公共静态无效日志异常(SchedulerException exc);
公共静态无效日志异常(SecurityException exc);
公共静态无效日志SearchException(SearchException exc);
公共静态void ProcessModuleLoadException(控制ctrl,异常exc);
公共静态void ProcessModuleLoadException(PortalModuleBase objPortalModuleBase,异常exc);
公共静态void ProcessModuleLoadException(控制ctrl、异常exc、bool显示错误消息);
公共静态无效ProcessModuleLoadException(PortalModuleBase objPortalModuleBase,异常exc,bool DisplayErrorMessage);
公共静态void ProcessModuleLoadException(字符串友好消息、控件ctrl、异常exc);
公共静态void ProcessModuleLoadException(字符串友好消息、控件ctrl、异常exc、bool显示错误消息);
公共静态void ProcessModuleLoadException(字符串友好消息、PortalModuleBase对象、PortalModuleBase、异常exc、bool显示错误消息);
公共静态void ProcessPageLoadException(异常exc);
公共静态void ProcessPageLoadException(异常exc,字符串URL);
公共静态无效ProcessScheduleException(异常exc);
}
}

DNN包括log4net,请参阅此wiki文章:

log4net可用,但大多数模块在DNN中使用自定义异常类,该类将在EventLog表中存储“事件”,您可以从Admin/Event Viewer页访问“事件”报告,包括错误

通常,在模块中,您可以执行以下操作

试试看
{
//这里的东西
}
catch(异常exc)//加载模块失败
{
异常。ProcessModuleLoadException(本,exc);
}

关于这一点的原始帖子已经发布很久了,在为自己做了一些研究之后,我相信我找到了一个比公认答案更好、更新的资源。下面包含了关于如何设置Log4Net并将其集成到模块中的更多信息

使用Log4Net方法的一个优点似乎是能够配置日志记录级别,以便更容易地调查和调试应用程序。在环境之间移动应用程序时,这尤其有用。我在调试服务器上的应用程序时使用了这个选项,在服务器上我无法连接到进程并中断应用程序进行调试。我打开日志级别并处理日志中的信息。这可能是一种痛苦的调试方式,但在您陷入困境时确实很有帮助

在DNN 7中,此处提到的DnnLog类别已折旧,因此可能应探索替代方案

看起来自定义异常类适用于所有情况下都需要记录的异常。我发现这篇稍旧的文章,如果需要记录自定义信息,它可能仍然相关。有些课程需要更新,但整体技术看起来不错,更符合Chris的建议。
稍加调整,此示例可用于实现可配置的日志记录级别。

我的理解是,您有以下选项:

  • 使用类异常记录错误
  • 要登录文件,请使用DnnLogger或LoggerSource。看
  • 要登录管理事件查看器(实际上使用sql表),请使用EventLogController。看

嗨,克里斯,我在你的模板中看到了这一点,很高兴听到你了解了它的实际用途。在OP问题中,有一些函数定义包括“FriendlyMessage”。此字段旨在允许开发人员记录其他详细信息,还是在发生错误时向用户显示此字段。如果它不是关于异常的自定义信息的地方,是吗?@RacerNerd我以前没有尝试过使用friendlymessage,但我猜当出现问题时,它会显示给最终用户您可以在DNN 7中使用DnnLogger或LoggerSource: