2016-03-23 10 views
2

マルチプロジェクトソリューションでlog4netを使用する場合のベストプラクティスは何ですか? すべてのプロジェクトにlog4net Nugetをインストールしますか? 私は、log4netを使用するインフラストラクチャでロガーを作成する方法はありますか? 私は何か考えていただければ幸いです。マルチプロジェクトソリューションでlog4netを使用

答えて

2

個人的には、私のロガーをIoCコンテナ経由で注入する方が好きです。あなたはすることはできますが、する必要はありません。

あなたのロギングニーズのためのインターフェイスを作成して、すべてのプロジェクトに参照があるプロジェクトに配置するだけです。 (コア)

public interface ILogger 
{ 
    void Trace(string message); 

    void Trace(string format, params object[] args); 

    void Info(string message); 

    void Error(string message); 

    void Error(string message, Exception exception); 

    void Error(Exception exception); 
} 

これで、必要な場合は各ロガーライブラリの実装を作成し、必要に応じて切り替えることができます。しかし、私はロギングインフラストラクチャを変更するプロジェクトを見たことがありません。

上記のILoggerインターフェイス用のNlogロガー実装。あなたは自分のlog4netのロガーの実装を作成し、そのインスタンスを初期化した場合、彼らはその実装を使用している場合

using System; 
using NLog; 

namespace Tvinio.Core.Logging.NLog 
{ 
    public class NLogger : ILogger 
    { 
     private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); 

     public void Trace(string message) 
     { 
      Logger.Trace(message); 
     } 

     public void Trace(string format, params object[] args) 
     { 
      Logger.Trace(format, args); 
     } 

     public void Info(string message) 
     { 
      Logger.Info(message); 
     } 

     public void Error(string message) 
     { 
      Logger.Error(message); 
     } 

     public void Error(string message, Exception exception) 
     { 
      Logger.Error(exception, message); 
     } 

     public void Error(Exception exception) 
     { 
      Logger.Error(exception); 
     } 
    } 
} 

さて、Visual Studioは、参照されるすべてのプロジェクトにあなたのための参照を運ぶでしょう。

また、依存性注入についても読むことを強くお勧めします。ここで記事を見つけることができます。 http://martinfowler.com/articles/injection.html

関連する問題