C#でのNlogログツールの使用

27113 ワード

C#でのNlogログツールの使用
インストール
Nugetインストールにより、Nlogを検索し、NlogとNlogをインストールする.コンフィギュレーションテンプレートに相当します.
もちろん、プロジェクトのルートディレクトリの下にプロファイルNlogを作成することもできます.Nlog.configのプロパティでCopy to Output Directoryを設定する:Copy always
ベースディレクトリ構造

<nlog>
    <targets>
        <target>target>
        <target>target>
    targets>
    <rules>
        <logger>logger>
        <logger>logger>
    rules>
nlog>

targetsの下には、ログに格納されているアドレス、名前、フォーマット、サイズなど、ログ関連パラメータを構成します.
rulesの下にターゲット出力ルールを構成すると、targetsの下に構成されたrulesで使用されます.
NLog.Config使用テンプレート

<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="false"
      internalLogLevel="Off" internalLogFile="c:\temp
log-internal.log"
>
<variable name="myvar" value="myvalue"/> <targets> <target name="info" xsi:type="File" fileName="${basedir}/logs/info/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/> <target name="debug" xsi:type="File" fileName="${basedir}/logs/debug/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/> <target name="error" xsi:type="File" fileName="${basedir}/logs/error/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/> <target name="trace" xsi:type="File" fileName="${basedir}/logs/trace/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/> <target name="warn" xsi:type="File" fileName="${basedir}/logs/warn/log_${shortdate}.log" archiveAboveSize="500000" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/> <target name="console" xsi:type="ColoredConsole" encoding="utf-8" layout="${longdate} ${callsite} [${level}]: ${message}"/> targets> <rules> <logger name="*" level="Debug" writeTo="debug" /> <logger name="*" level="Info" writeTo="info"/> <logger name="*" level="Warn" writeTo="warn"/> <logger name="*" level="Trace" writeTo="trace"/> <logger name="*" level="Error" writeTo="error"/> <logger name="*" minlevel="Trace" writeTo="console"/> rules> nlog>

argetsとrulesの内容、テンプレート用のNugetでダウンロードしたNlogを添付します.config.
単純な使用
NLog.Logger logger = Nlog.LogManager.GetCurrentClassLogger(); 

logger.Debug("********");
logger.Info("********");
logger.Warn("********");
logger.Error("********");

##構成情報
###基本構成・
Nlogルートノードでの構成
  • autoReload:構成変更が自動的にロードされるかどうか.
  • throwExceptions:ログに異常が発生した場合に異常を放出する必要があるかどうか、trueログに異常を記録するように構成された場合に異常がキャプチャされていないため、プログラムが停止します.
  • internalLogLevel:nlogログの実行ログ記録レベルを示す.
  • internalLogFile:nlogログの実行ログレコードの位置を示す../XXXXにより、プログラムの相対ディレクトリを構成することができる.ログレベル
    Level
    FirstCharacter
    Ordinal
    Trace
    T
    0
    Debug
    D
    1
    Info
    I
    2
    Warn
    W
    3
    Error
    E
    4
    Fatal
    F
    5
    Off
    O
    6

  • ターゲット
    <targets async="true">  <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"            layout="${longdate} ${uppercase:${level}} ${message}" />targets>
    
    asynctrueに設定することで、ログを非同期で保存することができ、ログがビジネスパフォーマンスに影響を及ぼすことを防止できます.
    ####xsi:type
    タイプを入力します.次のタイプをサポートします.
  • ColoredConsole:カスタマイズ可能な色でログ・メッセージをコンソールに書き込みます.
  • Console-ログ・メッセージをコンソールに書き込みます.
  • Debug-シミュレーションターゲット-テスト用.
  • File-ログ・メッセージを1つ以上のファイルに書き込みます.
  • Mail-smtpプロトコルまたはフォルダを使用して、Eメールでログ・メールを送信します.
  • Null-ログ・メッセージを破棄します.主にデバッグおよびベンチマークテストのための具体的なパラメータの説明
    <targets async= Boolean”>  //    
      
    targets>
    
  • rules(ルール)
    <rules>    <logger name="*" minlevel="Debug" writeTo="f" />  rules>
    
    Nlogノードの下にrulesノードを追加し、rulesノードの下に複数のloggerノードを構成することができ、各loggerノードは1つの制約である.
  • name:logger名、*であればすべてのログに適用されることを示し、targetクラスのログ出力に特化したlogdemo.testがある場合、logdemo.test.*に設定できます.現在の制約では、logdemo.testの名前空間の先頭のログ出力のみが許可されていることを示します.
  • minlevel:現在の制約の最小レベルを表し、その値以上のログレベルのみが記録されます.
  • writeTo:現在のルールがどのtargetを制約しているかを示します.

  • 参考記事
    https://blog.csdn.net/jun502525164/article/details/40352253
    https://blog.csdn.net/xishining/article/details/85219755
    https://www.cnblogs.com/itjeff/p/6088149.html