1. 程式人生 > >Nlog日誌之File

Nlog日誌之File

line pen 寫入 enc inf ole uget rule col

一:簡介

NLog是一個簡單靈活的.NET日誌記錄類庫。通過使用NLog,我們可以在任何一種.NET語言中輸出帶有上下文的(contextual information)調試診斷信息,根據喜好配置其表現樣式之後發送到一個或多個輸出目標(target)中。

詳細配置文章請參考:http://www.cnblogs.com/RitchieChen/archive/2012/07/16/2594308.html

二:應用

直接在NuGet中下載Nlog包即可,需要在項目的根目錄下創建NLog.config配置文件,當前文章只記錄文件方式寫入日誌,配置文件如下:

<?xml version="1.0" ?>
<nlog xmlns="
http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="file" xsi:type="File" layout="${longdate} ${logger} ${message}" fileName="${basedir}/logs/${level}.txt" //level是已文件級別作為日誌名,shortdate是以時間作為日誌名
 keepFileOpen="false" /> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="file" /> </rules> </nlog>

異步寫入文件

<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <targets>
    <target name="
file" xsi:type="AsyncWrapper" queueLimit="5000" overflowAction="Discard"> <target name="file" xsi:type="File" layout="${longdate} ${logger} ${message}" fileName="${basedir}/logs/${level}.txt" keepFileOpen="false" /> </target> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="file" /> </rules> </nlog>

配置語法

<targets>
  <target xsi:type="File"
          name="String"
          layout="Layout"
          header="Layout"
          footer="Layout"
          encoding="Encoding"
          lineEnding="Enum"
          archiveAboveSize="Long"
          maxArchiveFiles="Integer"
          archiveFileName="Layout"
          archiveNumbering="Enum"
          archiveEvery="Enum"
          replaceFileContentsOnEachWrite="Boolean"
          fileAttributes="Enum"
          fileName="Layout"
          deleteOldFileOnStartup="Boolean"
          enableFileDelete="Boolean"
          createDirs="Boolean"
          concurrentWrites="Boolean"
          openFileCacheTimeout="Integer"
          openFileCacheSize="Integer"
          networkWrites="Boolean"
          concurrentWriteAttemptDelay="Integer"
          concurrentWriteAttempts="Integer"
          bufferSize="Integer"
          autoFlush="Boolean"
          keepFileOpen="Boolean" />
</targets>

控制臺

    class Program
    {
        static void Main(string[] args)
        {
            NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();
            log.Debug("記錄一個錯誤日誌");
            Console.WriteLine("執行完畢");
            Console.ReadKey();
        }
    }

Nlog日誌之File