You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DNN管理员/服务器事件日志记录数据及调试2sxc控制器

调试2sxc控制器与日志记录方案

一、解决Log4Net无法识别的问题

你碰到的ILog类型未识别问题,确实是因为缺少必要的引用和命名空间:

  • 先确保项目安装了log4net NuGet包,在NuGet包管理器中搜索安装即可;
  • 然后在控制器类顶部添加命名空间引用:
    using log4net;
    using log4net.Core;
    
  • 另外,2sxc环境下更推荐适配DNN的写法来获取Logger:
    private static readonly ILog Logger = LogManager.GetLogger(typeof(MyClassName));
    

二、DNN事件日志的正确使用(解决PortalSettings参数问题)

你找到的DNN EventLog代码片段是可行的,在2sxc控制器里可以轻松获取所需参数:

  • 2sxc控制器继承自ToSic.Sxc.Dnn.ApiController,可以直接通过PortalSettings属性拿到当前门户设置,不用额外传入;
  • UserId可以通过User.UserId(DNN上下文直接提供)获取。
    调整后的完整代码示例:
using DotNetNuke.Services.Log.EventLog;

// 在你的控制器方法中
var eventLogController = new EventLogController();
eventLogController.AddLog(
    "2sxc调试日志",  // 日志标题
    $"需要调试的变量值:{yourTargetVariable}",  // 替换成你要记录的变量内容
    PortalSettings,  // 直接用控制器自带的属性
    User.UserId,  // 当前操作的用户ID
    EventLogController.EventLogType.ADMIN_ALERT  // 日志类型,可按需调整
);

写完后,你就能在DNN后台的事件日志模块里查看这些记录了。

三、2sxc专属的调试与日志方案

其实2sxc本身就提供了更贴合场景的调试工具,不用额外折腾:

  • 使用2sxc内置日志API:控制器继承自ApiController后,直接用Log属性即可,无需额外引用:
    // 记录普通调试信息
    Log.Information("控制器方法开始执行,参数:{ParamName}", paramValue);
    // 记录错误信息(带异常详情)
    Log.Error("方法执行出错", exceptionInstance);
    
    这些日志会同步到DNN日志系统,也能在2sxc后台的应用管理 -> 日志中查看(记得开启对应日志级别)。
  • 快速调试变量技巧:
    1. 在Visual Studio中附加到DNN的应用程序池进程(一般是w3wp.exe),设置断点后触发控制器方法,直接查看变量值;
    2. 临时返回变量的JSON结果快速验证:
      return Json(new { DebugVariable = yourTargetVariable });
      
      调用接口后就能直接看到变量内容,调试完记得删掉这段代码。

内容的提问来源于stack exchange,提问作者Frédéric Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:44:06