.NET Nlogを使用してログ情報を記録する(三)


自動再構成
Nlogのプロファイルは、プログラムの起動後に自動的にロードされます.WindowsサービスやASP.NETアプリケーションなど、長時間実行されるプロセスでは、プログラム実行中に一時的にレコードレベルを向上させる必要がある場合がありますが、アプリケーションを再起動する必要はありません.Nlogは、プロファイルの変更を自動的に追跡し、プロファイルが変更されると、Nlogはすぐに自動的に再ロードされます.この要件は、プロファイルにを設定することで実現できます.この自動再構成機能は、含まれるファイルにも適用されます.つまり、含まれるファイルが変化すると、Nlogも同様に構成ファイル全体を自動的に再ロードします.
 
ログ機能エラー
Nlogはすでに構成されていますが、ログ出力がないなど、アプリケーションには理解しにくい問題が発生する場合があります.その中で最も一般的な原因はASPである.NETの権限——ASP.NETのaspnet_wp.exeまたはw 3 wp.exeにはNlogプロファイルで指定したディレクトリへの書き込み権限がない場合があります.Nlogは自身の運転中に発生した異常に対して強い監視能力を持っている.以下の設定では、これらのモニタリング結果を指定した場所に出力したり、これらの異常に対して対応する処理を行ったりすることができます(デフォルトでは、自身の異常は無視されます).
  • -Nlog自身が異常を投げた場合、このオプションは異常をログの呼び出し元に戻すことができます.開発の過程で、この設定は非常に役に立ち、異常の位置と原因を迅速に特定するのに役立ちます.一方、プログラム開発が終了してアプリケーション環境に配備される場合は、Nlog自身の異常によってアプリケーション全体がクラッシュしないように、できるだけ早くthrowExceptionsをfalseに設定する必要があります.
  • -Nlogに自身の実行中のログ情報(発生する可能性のある例外を含む)をファイルに書き込むようにします.
  • -内部ログに書き込まれるレコードレベルを選択します.このレベル設定が高いほど、対応する出力ログファイルは小さくなります.
  • -内部ログ情報をコンソールに送信します.
  • -内部ログ情報を標準異常出力(stderr)に送信します.

  •  
    非同期処理、ラッピング、および複合出力ターゲット
    Nlogのパッケージングと複合出力ターゲットの特性により、出力ターゲットのデフォルトの動作を修正することができ、この修正は以下のいくつかの態様に現れている.
  • 非同期処理(ターゲット出力は個別のスレッドで処理する)
  • 異常時自動再試行
  • 負荷バランシング
  • キャッシュ
  • ろ過
  • スタンバイ出力ターゲット(プライマリ出力ターゲットが失敗した場合にスタンバイ出力ターゲットを有効にする)
  • .
  • その他、http://www.nlog-project.org/targets.html
  • 参照
    コンフィギュレーションファイルに複数のtargetノードをネストすれば、パッケージまたは複合出力ターゲットの定義が完了します.ネストの深さには制限はありません.例えば、出力先に非同期処理と異常自動再試行機能を追加し、以下のコードに従ってNlogを構成すればよい.
    <targets> 
      <target name="n" xsi:type="AsyncWrapper"> 
        <target xsi:type="RetryingWrapper"> 
          <target xsi:type="File" fileName="${file}.txt"/> 
        </target> 
      </target> 
    </targets> 

     
    非同期処理の特性は極めて一般的であるため、Nlogは、出力ターゲットがAsyncWrapperパッケージを自動的に適用するようにという簡略化された方法を提供する.
     
    プログラミングによる構成
    場合によっては、Nlogを構成するためにプロファイルを使用するのではなく、Nlogの構成APIを使用することを選択する場合があります.これらのAPIの詳細な説明は本明細書の範囲を超えているので、ここでは簡単に紹介するだけです.Nlogをプログラミングで構成するには、次の手順に従います.
  • 構成情報
  • を保存するLoggingConfigurationオブジェクトを作成します.
  • 出力対象オブジェクト
  • を少なくとも1つ作成する.
  • 出力対象オブジェクトの属性
  • を設定する.
  • LoggingRuleオブジェクトを設定し、LoggingConfigurationオブジェクトのLoggingRulesセットに
  • を追加します.
  • ロギング・コンフィギュレーションオブジェクトを有効にする(ロギング・コンフィギュレーションオブジェクトにロギング・コンフィギュレーションを設定すればよい)
  • .
    次のコードクリップは、色をサポートするコンソールとファイルの2つの出力ターゲットオブジェクトをプログラミングで作成し、レコードレベルがDebug以上のログ情報を出力ターゲットに送信します.
    using NLog; 
    using NLog.Targets; 
    using NLog.Config; 
    using NLog.Win32.Targets; 
     
    class Example 
    { 
        static void Main(string[] args) 
        { 
            // Step 1. Create configuration object 
             
            LoggingConfiguration config = new LoggingConfiguration(); 
             
            // Step 2. Create targets and add them to the configuration 
     
            ColoredConsoleTarget consoleTarget = new ColoredConsoleTarget(); 
            config.AddTarget("console", consoleTarget); 
             
            FileTarget fileTarget = new FileTarget(); 
            config.AddTarget("file", fileTarget); 
             
            // Step 3. Set target properties 
             
            consoleTarget.Layout = "${date:format=HH\\:MM\\:ss} ${logger} ${message}"; 
            fileTarget.FileName = "${basedir}/file.txt"; 
            fileTarget.Layout = "${message}"; 
             
            // Step 4. Define rules 
             
            LoggingRule rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget); 
            config.LoggingRules.Add(rule1); 
     
            LoggingRule rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget); 
            config.LoggingRules.Add(rule2); 
             
            // Step 5. Activate the configuration 
     
            LogManager.Configuration = config; 
             
            // Example usage 
     
            Logger logger = LogManager.GetLogger("Example"); 
            logger.Trace("trace log message"); 
            logger.Debug("debug log message"); 
            logger.Info("info log message"); 
            logger.Warn("warn log message"); 
            logger.Error("error log message"); 
            logger.Fatal("fatal log message"); 
        } 
    }

     
     
    Nlogは何ができるの?
    NLog supports some more logging scenarios, which couldn't be fully described here. See the links below for more information:
    これに加えて、Nlogはさらに複雑なログ記録が必要なシーンをサポートしています.紙面に限られていますが、ここでは一つ一つリストすることはできません.興味があれば、次のリンクを参照してください.
  • 異常ログ-http://sourceforge.net/mailarchive/forum.php?thread_id=6766833&forum_id=41984
  • 条件式言語-http://www.nlog-project.org/conditions.html
  • NlogViewer-リアルタイムのログ・ビューア(現在pre-alphaフェーズ中)-http://viewer.nlog-project.org/
  • 転載先:http://www.cnblogs.com/dflying/archive/2006/12/07/585787.html