C# 在DNN 7+;中应如何使用LoggerSource;?

C# 在DNN 7+;中应如何使用LoggerSource;?,c#,logging,log4net,dotnetnuke-7,C#,Logging,Log4net,Dotnetnuke 7,我一直在考虑在我的DNN 7+站点上实现日志记录。我希望有一个可配置的日志记录级别,比如log4net提供的日志记录级别 我试图按照说明集成DNN站点上的log4net。添加引用和代码行以使用日志记录后: DnnLog.Info("My Logging Worked!"); 代码报告了一条警告,内容如下: “DotNetNuke.Instrumentation.DnnLog”已过时:“”在 7.0.1由于性能不佳,请使用LoggerSource.Instance“' 我很难找到正确做事方式的信

我一直在考虑在我的DNN 7+站点上实现日志记录。我希望有一个可配置的日志记录级别,比如log4net提供的日志记录级别

我试图按照说明集成DNN站点上的log4net。添加引用和代码行以使用日志记录后:

DnnLog.Info("My Logging Worked!");
代码报告了一条警告,内容如下:

“DotNetNuke.Instrumentation.DnnLog”已过时:“”在 7.0.1由于性能不佳,请使用LoggerSource.Instance“'

我很难找到正确做事方式的信息。“DnnLog”似乎已被一个类似的类所取代,该类与名为“DnnLogger”的log4net交互。使用此类(以及“LoggerSource”类)的一个区别是,不再使用静态方法完成日志记录

用于检索记录器实例的“GetLogger()”函数带有一些参数,我还没有找到任何描述适当用法的文档。DNN来源有很多例子。从这些示例来看,适当的用法似乎是提供当前类。在声明类“MyClass”的文件“MyClass.cs”中,似乎以下内容是正确的:

ILog logger = LoggerSource.Instance.GetLogger(typeof(MyClass));

使用typeof()的第一行代码返回哪个记录器?我的意思是,这个记录器会使用为站点配置的log4net设置吗?如果不使用log4net设置,日志文件保存在哪里,配置设置调整在哪里?我的书呆子想知道typeof()类参数到底发生了什么,为什么要使用它

如果第一个示例没有连接到log4net(或者允许配置易于使用的日志级别),那么第二个选项是正确的吗?如果是,要传递的适当字符串是什么?“我的班级”是我的猜测,但我无法证实

如果我在这里完全偏离了轨道,应该从另一个方向接近这一点,请随时提出建议


谢谢大家

我在网上发布了同样的问题。要对该答案进行解释和扩展:

  • 折旧的类有性能问题,因为日志记录不正确 使用静态方法完成。新样式使用非静态方法,因此 每个页面或类都可以创建自己的记录器实例。这 防止程序在发生错误时等待共享实例 同时发生日志请求
  • ILog和DNNLogger都使用log4net配置
  • 将ILog与LoggerSource一起使用会使您更接近根,因此使用ILog比使用DNNLogger更好,但没有太大区别
  • 获取用于日志记录的对象的最佳方法是:

    ILog logger = LoggerSource.Instance.GetLogger(typeof(MyClass));
    
  • 传递类名有助于将错误信息上下文化 读取日志文件时。使用该类时,日志文件将 包含命名空间和类以及错误信息

  • 要使用LoggerSource和ILog类,需要以下using语句:

    using DotNetNuke.Instrumentation;
    

希望此信息能帮助任何想知道DNN7中日志记录更改的人
快乐编码

虽然没有完全脱离主题,但在这种情况下,你可以通过直接发布到DNN论坛获得更好的答案。谢谢Joel。我已经采纳了你的建议,并将其直接发布在DNN论坛上,这只会有所帮助。话虽如此,我认为StackOverflow和这个网站上的人都很了不起,所以这似乎是一条路要走。我还没有那个帖子的链接,因为它需要经过审核。这是一个自我回答,所以如果有人想添加什么,请添加。我会很高兴投票选出一个好的答案,如果可能的话,把复选标记移过去。
using DotNetNuke.Instrumentation;