2017-07-11 1 views
0

J'utilise le code ci-dessous pour créer une connexion dans mon projet à l'aide de PRISM ILoggrFacade. Mais je ne suis pas sûr est la meilleure façon et la deuxième chose comment puis-je utiliser la journalisation de classe CustomLogger parce que je suis incapable de créer une journalisation.Impossible de créer le fichier journal

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; 
      } 
     } 
    } 

Bootstrapper

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

ViewModel

  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> 
+0

Tout d'abord, n'utilisez pas le 'Serv' iceLocator' pour obtenir l'enregistreur. Le localisateur de service est considéré comme un anti-pattern si vous ne mettez pas en place un conteneur DI par vous-même. Et en second lieu: quelle est votre question ** particulière ** en réalité? – dymanoid

+0

@dymanoid impossible de créer le fichier journal – stylishCoder

+0

Wha texactly va mal? Avez-vous une erreur? Le code passe-t-il mais le fichier n'est pas créé? Avez-vous une exception quelque part? – Squirrelkiller

Répondre

0

problème avec le code ci-dessus est que nécessaire de configurer log4net dans l'assemblage comme ci-dessous:

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

également en plus si vous wan pour faire glisser log4net dans ViewModels l'utilisation ci-dessous le code

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

Exemple

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