如何在 DNN 管理日志或服务器事件日志中记录数据

How to log data in DNN admin log or server event log

我只是想调试一个控制器,但我无法查看从 2sxc 函数获得的变量。

我尝试通过 Log4Net 写入来记录变量:

private static readonly ILog Logger = LoggerSource.Instance.GetLogger(typeof(MyClassName));

但 ILog 类型在 2sxc 控制器中未知。我缺少参考吗?

我还找到了这个片段:

using DotNetNuke.Services.Log.EventLog;

var objEventLog = new EventLogController();
objEventLog.AddLog("Sample Message", "Something Interesting Happened!", PortalSettings, UserId, EventLogController.EventLogType.ADMIN_ALERT)

但我不知道要发送什么给 "PortalSettings",而且我对 2sxc 编程接口的帮助程序一无所知。

你们如何调试 2sxc 控制器和记录事件(不仅用于调试)?

感谢您的帮助!

这些片段的来源:Scott McCulloch (https://www.smcculloch.com/code/logging-to-the-dnn-event-log)

这给出了部分答案:http://www.dnnsoftware.com/community-blog/cid/141723/using-log4net-with-dotnetnuke。而且,看起来命名空间是 DotNetNuke.Instrumentation.

至于 PortalSettings,这是您门户的门户设置。我认为您需要引用 DotNetNuke.Entities.Portals,然后使用 PortalController 检索门户设置对象。

Joe Craig 之前的 post 对我帮助很大。

因此,在 2sxc 应用程序 中,我现在可以登录 DNN 事件日志(不是 Windows 那个):

@using DotNetNuke.Services.Log.EventLog;
@using DotNetNuke.Entities.Portals;

@{
 var aujourdhui = DateTime.Now;

 var objEventLog = new EventLogController();
    PortalSettings PortalSettings = new PortalSettings();

 objEventLog.AddLog("Debug info", "Variable \"Aujourdhui\" contains: " + aujourdhui.ToString("dddd d MMMM yyyy"), PortalSettings, @Dnn.User.UserID, EventLogController.EventLogType.ADMIN_ALERT);

    }

唯一的小问题是此 PortalSettings returns 是第一个门户,即使我的 2sxc 应用程序在第二个门户 (id=1) 上运行也是如此。我肯定错过了什么。但是现在和我需要的(调试),这对我来说没问题!