91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET日志框架Nlog怎么使用

發布時間:2022-02-01 16:39:38 來源:億速云 閱讀:349 作者:iii 欄目:開發技術

這篇文章主要介紹“.NET日志框架Nlog怎么使用”,在日常操作中,相信很多人在.NET日志框架Nlog怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”.NET日志框架Nlog怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

快速安裝

在軟件包管理器控制臺中使用GUI或以下命令:

1.安裝Nlog

Install-Package Nlog

2.安裝Nlog.Config

Install-Package Nlog.Config

快速配置

打開目錄中得Nlog.Config文件, 可以注意到, XML文件中有詳細說明, rules區允許添加用戶自定義得路由規則, targets則用于配置一些輸出目標, 如下:

<?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="false"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

  <!-- optional, add some variables
  https://github.com/nlog/NLog/wiki/Configuration-file#variables
  -->
  <variable name="myvar" value="myvalue"/>

  <!--
  See https://github.com/nlog/nlog/wiki/Configuration-file
  for information on customizing logging rules and outputs.
   -->
  <targets>

    <!--
    add your targets here
    See https://github.com/nlog/NLog/wiki/Targets for possible targets.
    See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
    -->

    <!--
    Write events to a file with the date in the filename.
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
    -->
  </targets>

  <rules>
    <!-- add your logging rules here -->

    <!--
    Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace)  to "f"
    <logger name="*" minlevel="Debug" writeTo="f" />
    -->
  </rules>
</nlog>

我們暫時把注釋的說明代碼移除, 還原到最簡潔得XML格式, 如下:

<?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" >
  <targets>
    <!--這個目標:最終輸出文件類型, 位于根目錄中得logs文件夾中, 名稱以每日得時間一次生成log文件 , layout: 這個選項為生成的格式-->
    <target xsi:type="File" name="f" 
            fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
  </targets>

  <rules>
    <!--設定了一個Debug得路由, 最終指向了一個f名稱得目標 -->
    <logger name="*" minlevel="Debug" writeTo="f" />
  </rules>
</nlog>

快速使用

1.創建Nlog實例

private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();

2.使用Debug進行輸出

由于在Nlog.Config當中, 我們已經添加了Debug的最終輸出目標, 所以我們嘗試輸出Debug的內容:

 class Program
    {
        private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();

        static void Main(string[] args)
        {
            Logger.Debug("我出現了意外!");

            Console.ReadKey();
        }
    }

運行完成之后,可以在當前的輸出目錄中, 發生已經生成了一個logs的文件夾,并且生成了當前計算器日期的log文件 (這個規則在Nolog.Config當中可以進行配置), 如圖所示:

.NET日志框架Nlog怎么使用

詳解配置

關于rules中, 我們可以添加多種路由規則, 并且指向多個目標, 如下所示:

.NET日志框架Nlog怎么使用

添加支持Console輸出

1.在rules中添加Info, writeTo指向一個Console的目標

<targets>
    <!--<target xsi:type="File" name="f" 
            fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />-->
    <target xsi:type="Console" name="console"/>
  </targets>

  <rules>
    <!--<logger name="*" minlevel="Debug" writeTo="f" />-->
    <logger name="*" minlevel="Info" writeTo="console"/>
  </rules>

2.使用Info輸出

.NET日志框架Nlog怎么使用

輸出至CSV文件

1.在rules中添加一個新的路由, 以支持csv文件, 并且添加一個目標, 輸出至csv文件, column可以用于指定每列生成的數據內容格式

    <targets>
        <target name="csv" xsi:type="File" fileName="${basedir}/file.csv">
            <layout xsi:type="CSVLayout">
                <column name="time" layout="${longdate}" />
                <column name="message" layout="${message}" />
                <column name="logger" layout="${logger}"/>
                <column name="level" layout="${level}"/>
            </layout>
        </target>
    </targets>
 
    <rules>
        <logger name="*" minlevel="Debug" writeTo="csv" />
    </rules>

最終調用Debug("xxxx"), 輸出的效果如下:

.NET日志框架Nlog怎么使用

配置日志大小

Nlog允許用戶配置單個文件大小, 放置在內容過長效率過慢,配置了大小之后, Nlog會自動創建一個新的文件副本,插入新的日志輸出。

  • maxArchiveFiles: 允許生成的副本文件最大數量

  • archiveAboveSize: 允許單個文件得最大容量

  • archiveEvery: 按天生成

  • layout: 當前得內容布局格式

  • fileName: 包含完整得生成文件得路徑和文件名

<targets>
    <target name="file" xsi:type="File"
        layout="${longdate} ${logger} ${message}${exception:format=ToString}"
        fileName="${basedir}/logs/logfile.txt"
        maxArchiveFiles="5"
        archiveAboveSize="10240"
        archiveEvery="Day" />
  </targets>

  <rules>
    <logger name="*" minlevel="Debug" writeTo="file" />
  </rules>

配置日志分級

單個文件目標可用于一次寫入多個文件。以下配置將導致每個日志級別的日志條目被寫入一個單獨的文件,支持以下格式:

Trace.log

Debug.log

Info.log

Warn.log

Error.log

Fatal.log

只需要在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}${exception:format=ToString}" 
            fileName="${basedir}/${level}.log" />
    </targets>
 
    <rules>
        <logger name="*" minlevel="Debug" writeTo="file" />
    </rules>
</nlog>

配置生成規則

只需要將filename中編寫得固定名稱修改程 ${shortdate} 即可

<?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}${exception:format=ToString}" 
            fileName="${basedir}/${shortdate}.log" />
    </targets>
 
    <rules>
        <logger name="*" minlevel="Debug" writeTo="file" />
    </rules>
</nlog>

日志過濾器

可以在路由當中, 為每個路由配置自定義得日志過濾器fliter, 如下所示, 演示了使用各種表達式來配置過濾器:

<rules>
    <logger name="*" writeTo="file">
        <filters>
            <when condition="length('${message}') > 100" action="Ignore" />
            <when condition="equals('${logger}','MyApps.SomeClass')" action="Ignore" />
            <when condition="(level >= LogLevel.Debug and contains('${message}','PleaseDontLogThis')) or level==LogLevel.Warn" action="Ignore" />
            <when condition="not starts-with('${message}','PleaseLogThis')" action="Ignore" />
        </filters>
    </logger>
</rules>

條件語言

過濾器表達式以特殊的迷你語言編寫。該語言包括:

關系運算符:==,!=,<,<=,>=和>

注意:一些預先定義的XML字符可能需要轉義。例如,如果嘗試使用'<'字符,則XML解析器會將其解釋為開始標記,這會導致配置文件中的錯誤。而是<在這種情況下使用轉義版本的<<(())。

布爾運算符:and,or,not

始終被視為布局的字符串文字- ${somerenderer}

布爾文字- true和false

數值文字-例如12345(整數文字)和12345.678(浮點文字)

日志級別文字- LogLevel.Trace,LogLevel.Debug,...LogLevel.Fatal

預定義的關鍵字來訪問最常用的日志事件屬性- level,message和logger

花括號-一起覆蓋默認優先級和分組表達式

條件函數-執行string和object測試

單引號應與另一個單引號轉義。

條件函數

以下條件功能可用:

contains(s1,s2)確定第二個字符串是否是第一個的子字符串。返回:true當第二個字符串是第一個字符串的子字符串時,false否則返回。

ends-with(s1,s2)確定第二個字符串是否是第一個字符串的后綴。返回:true當第二個字符串是第一個字符串的前綴時,false否則返回。

equals(o1,o2)比較兩個對象是否相等。返回:true當兩個對象相等時,false否則返回。

length(s) 返回字符串的長度。

starts-with(s1,s2)確定第二個字符串是否是第一個字符串的前綴。返回:true當第二個字符串是第一個字符串的前綴時,false否則返回。

regex-matches(input, pattern, options)在NLog 4.5中引入。指示正則表達式是否pattern在指定的input字符串中找到匹配項。options是一個可選的逗號分隔的RegexOptions枚舉值列表。

返回:true當在輸入字符串中找到匹配項時,false否則返回。

范例:regex-matches('${message}', '^foo$', 'ignorecase,singleline')

到此,關于“.NET日志框架Nlog怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

古丈县| 日土县| 利川市| 宁乡县| 沙洋县| 武邑县| 红原县| 平度市| 纳雍县| 邳州市| 台山市| 安国市| 五河县| 中山市| 比如县| 渭源县| 临江市| 乐平市| 京山县| 巨野县| 平远县| 巴东县| 招远市| 漳州市| 进贤县| 漠河县| 鄂尔多斯市| 阜新| 屏山县| 沅江市| 手游| 彝良县| 阳泉市| 万盛区| 滦平县| 保山市| 额济纳旗| 九龙坡区| 依安县| 兰溪市| 于都县|