【问题标题】:unable to create log file无法创建日志文件
【发布时间】:2017-07-11 09:21:27
【问题描述】:

我正在使用以下代码使用 PRISM ILoggrFacade 在我的项目中创建日志记录。 但我不确定是最好的方法,第二件事是如何使用 CustomLogger 类日志记录,因为我无法创建日志记录。

public class CustomLogger : ILoggerFacade
    {

        protected static readonly ILog log = LogManager.GetLogger(typeof(CustomLogger));
        public CustomLogger()
        {
            log4net.Config.XmlConfigurator.Configure();
        }

        public void Log(string message, Category category, Priority priority)
        {
            switch (category)
            {
                case Category.Debug:
                    log.Debug(message);
                    break;
                case Category.Warn:
                    log.Warn(message);
                    break;
                case Category.Exception:
                    log.Error(message);
                    break;
                case Category.Info:
                    log.Info(message);
                    break;
            }
        }
    }

引导程序

 private readonly CustomLogger _logger = new CustomLogger();
 protected override ILoggerFacade CreateLogger()
        {
            return _logger;
        }

视图模型

            logger.Log("Logging success", Category.Info, Priority.None);

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file type="log4net.Util.PatternString" value="C:\temp\log.txt" />
      <param name="AppendToFile" value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %message%newline" />
      </layout>
    </appender>
  </log4net>
</configuration>

【问题讨论】:

  • 首先,不要使用ServiceLocator获取logger。如果您不自己实现 DI 容器,则服务定位器被认为是一种反模式。第二:您的具体问题究竟是什么?
  • @dymanoid 无法创建日志文件
  • 究竟出了什么问题?你有错误吗?代码是否通过但文件没有被创建?您是否在某个地方遇到异常?
  • @Metallkiller 现在我能够创建日志文件了。实际上我正在构造函数中配置我的 xml ......但是一旦我必须指定“[程序集:log4net.Config.XmlConfigurator(ConfigFile = "log4Net.config", Watch = true)]" 在程序集中
  • @Metallkiller 现在我想知道如何在我使用统一的不同模块中使用日志记录。有什么想法吗?

标签: wpf logging mvvm prism


【解决方案1】:

上述代码的问题是需要在程序集中配置 log4net,如下所示:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4Net.config", Watch = true)]

此外,如果您想在 ViewModels 中拖动 log4net,请使用以下代码

 private readonly ILoggerFacade _loggerFacade;
 public ContentAViewViewModel(ILoggerFacade loggerFacade)
        {
          _loggerFacade = loggerFacade;
        }

示例

    private void LoadPeople()
        {
        _loggerFacade.Log("Load People", Category.Debug, Priority.High);
        }

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 2011-11-28
    • 2014-11-09
    相关资源
    最近更新 更多