私のコードからNLogの直接の依存関係を解消しようとしています。だから将来的に別のロギングライブラリを使うことに決めたら、それは無理でしょう。 私がやったことは NLogを非表示クラスプロパティを返す静的プロパティを使用
Logger.Instance.Fatal(ex, ex.Message);
だから、NLogの実際の実装は何とかから隠されている、あなたが見ることができるように
internal class Logger
{
private NLog.Logger _NLogInstance;
internal static Logger Instance
{
get
{
return new Logger();
}
}
public Logger()
{
LogManager.ReconfigExistingLoggers();
_NLogInstance = LogManager.GetCurrentClassLogger();
}
public void Trace(string message)
{
_NLogInstance.Trace(message);
}
public void Debug(string message)
{
_NLogInstance.Debug(message);
}
public void Info(string message)
{
_NLogInstance.Info(message);
}
public void Warn(string message)
{
_NLogInstance.Warn(message);
}
public void Error(Exception ex, string message)
{
_NLogInstance.Error(ex, message);
}
public void Fatal(Exception ex, string message)
{
_NLogInstance.Fatal(ex, message);
}
}
、1だけそうする必要が私のロガーを使用するには、以下の通りですLoggerのユーザー明日私はLog4netを使用する必要がある場合、私はLoggerクラスで実装を変更する必要があります。
このような問題はありますか?なぜなら、私はこれをやっている人々はどこにも見ないからです。それとももっと良い方法がありますか?
「明日はLog4netを使用する必要があります。これはよく知られている反パターンです。あなたはそれを必要としません。 http://martinfowler.com/bliki/Yagni.html – Oscar
@Oscar mind to more?私が見ることができるのは、私がこれをしなければ、私はNLogにしっかりとしているということです。 – Terrence
だから?どうしたの?ログプロバイダを変更する機能は、ソフトウェアの実際の機能上の必要条件だと思いますか?ログプロバイダを切り替えるプロジェクトについて聞いたことがありますか? – Oscar