NLogをテストするためのサンプルWindowsアプリケーションを作成しました。私はちょうどwhileループ内にすべてのメッセージレベルを書いています(トレース、デバッグ、警告&エラー)。私はautoReload='true'
を設定し、NLog設定ファイルでminlevel="Debug"
と指定しました。これは正常に動作し、すべてのメッセージを印刷します。NLogの自動ロードが機能しない
私はautoreloadオプションをテストしたいので、設定ファイルでminlevelを手動で "Warn"に変更して、ログだけを記録してください。アプリケーションの実行中に警告メッセージが表示されますが、エラーメッセージ。
しかし、アプリケーションを再起動すると、設定から取り込まれ、警告レベルとエラーレベルのメッセージだけが出力されます。私の理解がlinkに基づいている限り、NLogは設定が変更されたときに設定をリロードし、現在の設定の変更に基づいてログの印刷を開始する必要があります。何が間違っているか分かりません。プログラムで設定をリロードする必要がありますか?助けてください。
NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="true"
internalLogLevel="Trace" internalLogFile="c:\temp\nlog-internal.log" >
<targets>
<target name="FileLogger" xsi:type="File" archiveAboveSize="1048576" fileName="Trace.log" archiveNumbering="DateAndSequence" />
</targets>
<rules>
<logger name="*" writeTo="FileLogger" minlevel="Debug" />
</rules>
</nlog>
LogMessageにコードスニペット
、私のコードですprivate void LogMessages(CancellationToken token)
{
try
{
while (true)
{
logger.Debug("*********** Debug *************");
logger.Trace("----------- Trace --------------");
logger.Warn("~~~~~~~~~~~ Warn ~~~~~~~~~~~~~~");
logger.Error("========== Error =============");
if (token.IsCancellationRequested)
break;
}
}
catch (Exception ex)
{
throw ex;
}
}
以下のため、私は、スレッド/タスクのこれが起こっているかどうかを疑っから直接実行し始めました。メインスレッドが、問題は解決しません。また、NLogの内部ログを有効にしてエラーを確認しようとしましたが、疑わしいものは見つかりませんでした。
あなたの 'logger'はどうやっていますか? – Amy
あなたのプロジェクトで設定ファイルを編集していますか、bin \ Debugかbin \ Releaseディレクトリの設定ファイルを編集していますか? –
私はプロジェクトから編集していました。それは間違ったミスでした。ありがとう。これは、リリースディレクトリから編集するときに機能します。 – Reuben