2017-03-13 13 views
0

以下のコードを使用してNLogインスタンスを作成するプロジェクトがあります。設定APIで指定されたNLog設定をNLog設定ファイルxmlによって変更します。

public FileTarget CreateNLogFileTarget(string layout, FileArchivePeriod archiveMode, int maxArchiveFiles, 
     bool keepFileOpen, bool enableConcurrentWrites, ArchiveNumberingMode archiveNumberingMode, string fileName) 
    { 
     FileTarget fileTarget = new FileTarget(); 
     fileTarget.Layout = layout; 
     fileTarget.ArchiveEvery = archiveMode; 
     fileTarget.MaxArchiveFiles = maxArchiveFiles; 
     fileTarget.KeepFileOpen = keepFileOpen; 
     fileTarget.ConcurrentWrites = enableConcurrentWrites; 
     fileTarget.ArchiveNumbering = archiveNumberingMode; 
     fileTarget.FileName = fileName; 

     return fileTarget; 
    } 

    FileTarget infoLogFileTarget = CreateNLogFileTarget(@"${longdate} ${message}", 
      FileArchivePeriod.Hour, 70, false, true, ArchiveNumberingMode.Rolling, "${basedir}/Logs/" + infoLogName + "/${shortdate}{#}.log"); 

私はこのプロジェクトを別のプロジェクトで使用しています。このNLogユーティリティクラスを使用してロガーを作成する必要があります。しかし、私はこれらの設定を無効にする必要があります。これらの設定をxmlファイルでどのように上書きすることができますか?どんな助けでも大歓迎です。

答えて

0

XML設定でCreateNLogFileTargetFileTargetを使用するには、おそらくコードの他の部分にあるFileTargetのターゲット名を見つける必要があります。次に、あなたの設定でターゲットを使用することができます。

<logger name='*' minlevel="Trace" writeTo='theTarget' />

+0

ご質問が不明な場合は申し訳ありません。これは、私がロガーを使用している図書館プロジェクトですでに行われていることです。 LogManagerインスタンスまたはそのいずれかのコードにアクセスできません。私はXMLファイルを通してこれを行う必要があります。このコードへのアクセスは変更されていないためです。それは図書館からのものです! – mayooran

+0

ああ、それを逃した!答えが変わります。 – Julian

+0

これはあなたが話しているラインですか? nLogConfiguration.AddTarget(infoLogName、infoLogFileTarget); – mayooran

0

たぶんNLog-変数を使用することによって。 CreateNLogFileTargetを変更してパラメータを設定し、NLog変数から値を取得します。

起動時に、これらのNLog変数がすでにロードされているNLog構成に存在するかどうかを確認します。そうでない場合は、CreateNLogFileTargetを呼び出す前にランタイムによって設定されます。

https://github.com/NLog/NLog/wiki/Configuration-file#variables

関連する問題