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.
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.