Nlog 記錄日誌到 sqlite

來源:互聯網
上載者:User

標籤:

最近研究了一下Nlog這個日誌架構,這裡記錄一下如何將日誌寫到sqlite中。

第一步:使用NuGet擷取Nlog和Sqlite

  1. 第二步:在sqlite中建立一個database,這裡我用了SQLite Expert Personal視覺化檢視

第三步:在Nlog.config中配置target節點,這個在Nlog的官網中沒有尋找到相應的例子,但網上有一篇部落格有相應的記載,所以就先參考下:

<target name="Database" xsi:type="Database" keepConnection="false"            useTransactions="false"            dbProvider="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"            connectionString="Data Source=d:log.db3;Version=3;"           commandText="INSERT into Log(Timestamp, Loglevel, Logger, Callsite, Message) values(@Timestamp, @Loglevel, @Logger, @Callsite, @Message)">      <parameter name="@Timestamp" layout="${longdate}"/>      <parameter name="@Loglevel" layout="${level:uppercase=true}"/>      <parameter name="@Logger" layout="${logger}"/>      <parameter name="@Callsite" layout="${callsite:filename=true}"/>      <parameter name="@Message" layout="${message}"/>    </target>

但這隻是參考,首先我們擷取的sqlite版本不是1.0.65.0,所以要修改dbProvider中的字串,這裡可以用ILSpay查看

到這裡基本上就差不多了,但最新的Nlog需要的配置中還要加上這一句:

commandType="Text"

所以最終的配置如下:

  <targets>    <!-- add your targets here -->    <target name="File" xsi:type="File" fileName="C:Logfiles${shortdate}_nlog.txt"/>    <target name="Database" xsi:type="Database" keepConnection="false"            useTransactions="false"            dbProvider="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.97.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"            connectionString="Data Source=d:log.db3;Version=3;"            commandType="Text"            commandText="INSERT into Log(Timestamp, Loglevel, Logger, Callsite, Message) values(@Timestamp, @Loglevel, @Logger, @Callsite, @Message)">      <parameter name="@Timestamp" layout="${longdate}"/>      <parameter name="@Loglevel" layout="${level:uppercase=true}"/>      <parameter name="@Logger" layout="${logger}"/>      <parameter name="@Callsite" layout="${callsite:filename=true}"/>      <parameter name="@Message" layout="${message}"/>    </target>    <!--    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"            layout="${longdate} ${uppercase:${level}} ${message}" />    -->  </targets>  <rules>         <logger name="*" minlevel="Trace" writeTo="Database" />     </rules>

這樣我們就可以在代碼中直接使用Nlog記錄日誌了

Logger log = LogManager.GetCurrentClassLogger();LogManager.ThrowExceptions = true;log.Trace("test begin...");for (int i = 0; i < 5; i++){    Console.WriteLine(i);    log.Debug(i.ToString());}log.Trace("test end...");Console.WriteLine("Press any key to close the application");Console.ReadKey();

最後我們再用SQLite Expert Personal查看下是否記錄成功:

Nlog 記錄日誌到 sqlite

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.