首页 > 其他 > 详细

[Prism框架实用分享]如何在Prism应用程序中使用日志

时间:2014-03-03 21:09:25      阅读:752      评论:0      收藏:0      [点我收藏+]

前言

在Prism中有关日志的命名空间:

Microsoft.Practices.Prism.Logging

在Prism中,你可以使用Prism自带的Logger(比如TextLogger等),也可以使用自定义的Logger(比如Log4Net等),但所有的Logger都比须实现接口 ILoggerFacade 。下面就以Log4Net为例,实现一个自定义的Logger,并将它应用到Demo中。

有关Log4Net日志组件的使用方法这里就不介绍了,下面列出几篇介绍Log4Net的资料:

1. http://logging.apache.org/log4net/

2. http://blog.csdn.net/zhoufoxcn/article/details/2220533

3. http://blog.csdn.net/zhoufoxcn/article/details/6029021

Log4Net的配置

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net debug="true">
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
      <param name="File" value="d:\log.txt"/>
      <param name="AppendToFile" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%l %d [%t] %-5p %c [%x] - %m%n"/>
      </layout>
    </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="LogFileAppender"/>
    </root>
  </log4net>
</configuration>
bubuko.com,布布扣

以上是本例对Log4Net简单的配置

实现接口ILoggerFacade

新建一个类CustomLogger,并实现接口ILoggerFacade

bubuko.com,布布扣
    public class CustomLogger : ILoggerFacade
    {
        private readonly ILog s_ILogger = null;

        public CustomLogger()
        {
            if (s_ILogger == null)
            {
                s_ILogger = LogManager.GetLogger("Logger");
                log4net.Config.XmlConfigurator.Configure();
            }
        }

        #region ILoggerFacade 成员

        public void Log(string message, Category category, Priority priority)
        {
            if (string.IsNullOrEmpty(message))
                return;

            switch (category)
            {
                 case Category.Debug:
                    this.Debug(message);
                    break;
                case Category.Exception:
                    this.Error(message);
                    break;
                case Category.Info:
                    this.Info(message);
                    break;
                case Category.Warn:
                    this.Fatal(message);
                    break;
            }
        }

        #endregion


        void Debug(string message) { s_ILogger.Debug(message); }

        void Info(string message) { s_ILogger.Info(message); }

        void Error(string message) { s_ILogger.Error(message); }

        void Fatal(string message) { s_ILogger.Fatal(message); }
    }
bubuko.com,布布扣

简单的实现了ILoggerFacade接口,可参考Prism中TextLogger

将自定义Logger加载到主程序中

在Prism程序的启动器内Bootstrapper,重写CreateLogger()方法

        protected override Microsoft.Practices.Prism.Logging.ILoggerFacade CreateLogger()
        {
            return new CustomLogger();
        }

如何使用日志

在ViewModel或者其他逻辑类,服务类中,定义私有变量,并声明导入特性

        [Import]
        private ILoggerFacade _Logger;
bubuko.com,布布扣
        public void OnImportsSatisfied()
        {
            this._Logger.Log("Import Complete", Category.Info, Priority.None);

            if (PlugIns == null)
            ...
        }
bubuko.com,布布扣

[Prism框架实用分享]如何在Prism应用程序中使用日志,布布扣,bubuko.com

[Prism框架实用分享]如何在Prism应用程序中使用日志

原文:http://www.cnblogs.com/sunthx/p/3578024.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!