【问题标题】:I am unable to create a new NLog Logger because of 'Logger.Logger()'s protection level由于 'Logger.Logger() 的保护级别,我无法创建新的 NLog Logger
【发布时间】:2017-06-08 11:24:31
【问题描述】:

我目前正在使用 C# 开发一个新的 Prism 项目,并希望在我的 Bootstrapper 类中创建一个 NLog Logger。不幸的是,无论我做什么,它都拒绝构建,告诉我......

'Logger.Logger()' 由于其保护级别而无法访问。

下面列出了我的代码片段...

namespace PrismTemplate
{

    public class Bootstrapper : UnityBootstrapper
    {
        #region Method Overrides

        protected override ILoggerFacade CreateLogger()
        {
            //ILoggerFacade logger = new NLogLogger();
            ILoggerFacade logger = new Logger();
            logger.Log("Prism Template Logger was Created.", Category.Info, Priority.None);
            return logger;

            //return new Logger();
            //return null;
        }

        protected override DependencyObject CreateShell()
        {
            return new ShellWindow();
        }

        protected override void InitializeShell()
        {
            base.InitializeShell();

            ///Assign the shell which is a window to the apps main window, and show it

            App.Current.MainWindow = (Window)this.Shell;
            App.Current.MainWindow.Show();

        }

        #endregion Method Overrides

    }
}

我在 Visual Studio 中通过 Nuget 下载了 Prism 和 NLog。任何解决此问题的帮助将不胜感激。

谢谢,

特斯尼奇

【问题讨论】:

  • 你通常不会直接实例化记录器,你从LogManager获取它们例如:LogManager.GetCurrentClassLogger()LogManager.GetLogger("classname")

标签: c# wpf logging prism nlog


【解决方案1】:

由于 loggers 的大量配置,NLog 选择将创建日志的责任委托给密封的 LogManager 类。

您可以使用其中任何一个来获取实例:

LogManager.GetCurrentClassLogger()

LogManager.GetLogger(string name)

【讨论】:

  • 还有缓存有日志管理器,以防止不必要的内存/CPU使用。
猜你喜欢
  • 1970-01-01
  • 2015-09-26
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多