Prism 4 ILoggerFacade pour Log4Net?

je passe de Prism 2.1 à Prism 4, et j'ai besoin d'écrire une classe ILoggerFacade pour Log4Net. Mon ancien code de Prism 2.1 ne fonctionne plus. Est-ce que quelqu'un a un exemple de code pour un cours D'ILoggerFacade qu'il serait prêt à partager? Merci pour votre aide.

9
demandé sur Sebastian Paaske Tørholm 2011-01-24 22:31:13

1 réponses

j'ai pensé à elle. Très similaire au prisme 2. Tout d'abord, créez une classe Logger personnalisée qui implémente ILoggerFacade. Voici ma classe:

using log4net;
using Microsoft.Practices.Prism.Logging;

namespace FsNoteMaster3
{
    class Log4NetLogger : ILoggerFacade
    {
        #region Fields

        // Member variables
        private readonly ILog m_Logger = LogManager.GetLogger(typeof(Log4NetLogger)); 

        #endregion

        #region ILoggerFacade Members

        /// <summary>
        /// Writes a log message.
        /// </summary>
        /// <param name="message">The message to write.</param>
        /// <param name="category">The message category.</param>
        /// <param name="priority">Not used by Log4Net; pass Priority.None.</param>
        public void Log(string message, Category category, Priority priority)
        {
            switch (category)
            {
                case Category.Debug:
                    m_Logger.Debug(message);
                    break;
                case Category.Warn:
                    m_Logger.Warn(message);
                    break;
                case Category.Exception:
                    m_Logger.Error(message);
                    break;
                case Category.Info:
                    m_Logger.Info(message);
                    break;
            }
        }

        #endregion
    }
}

puis, dans la classe Prism 4 Bootstrapper, ajouter un outrepasser à la CreateLogger() méthode qui renvoie une nouvelle instance de la classe custom logger:

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

notez que dans la classe custom logger, ILog est une interface Log4Net, et LogManager est un objet Log4Net.

écrire à l'enregistreur personnalisé à partir de votre propre code (Prism s'occupe de ses propres entrées de journal)est un peu différent que dans Prism 2.1. Vous pouvez résoudre le logger directement à partir du conteneur IoC, ou vous pouvez utiliser le ServiceLocator.