2017-07-11 19 views
0

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> 
上記のコードで
+0

まず、Serv iceLocator'を実行してロガーを取得します。自分でDIコンテナを実装していない場合、サービスロケータはアンチパターンとみなされます。そして2番目:実際に**あなたの**特別な**質問は何ですか? – dymanoid

+0

@dymanoidログファイルを作成できません – stylishCoder

+0

どうやら間違っていますか?間違いはありますか?コードは通過しますが、ファイルは作成されませんか?あなたはどこかで例外を受け取りますか? – Squirrelkiller

答えて

0

問題は、以下のようなアセンブリ内のlog4netを構成することが必要である:

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

加えて、あなたはコード

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

の下のviewmodelsでの使用をlog4netのドラッグへのWAN場合例

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