NLog 配置與使用

有段時間沒寫博客了,過年放假,一直在弄CMS。什麼都本身寫了一遍,今天寫寫NLog,以前一用的log4net,感受配置起來仍是有些麻煩。數據庫

NuGet 添加組件

配置 NLog.config

<?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="true"
  internalLogLevel="Debug" 
  internalLogFile="c:\NLog\log.txt">
<targets async="true">
<default-wrapper xsi:type="BufferingWrapper" bufferSize="100"/>

<!-- write log message to console -->
<target xsi:type="Console" name="console"
        layout="
        ${newline}時間: ${longdate}
        ${newline}來源: ${callsite}
        ${newline}等級: ${level}
        ${newline}信息: ${message}
        ${newline}堆棧: ${event-context:item=exception} ${stacktrace}
        ${newline}${newline}-----------------------------------------------------------" />

<!-- write log message to file -->
<target xsi:type="File" name="file" fileName="${basedir}/Logs/${date:format=yyyy}/${date:format=MM}/${level}/${shortdate}.txt" 
        layout="
        ${newline}時間: ${longdate}
        ${newline}來源: ${callsite}
        ${newline}等級: ${level}
        ${newline}信息: ${message}
        ${newline}堆棧: ${event-context:item=exception} ${stacktrace}
        ${newline}${newline}-----------------------------------------------------------" />

<!-- write log message to database -->
<target xsi:type="Database" name="database" connectionstring="Data Source=DESKTOP-1COGQ4S;Initial Catalog=MiaoZhanCMS_db;Integrated Security=True;User ID=sa;Password=wangcong;">
  <!-- SQL command to be executed for each entry -->
  <commandText>
    INSERT INTO SystemLog(UserName,UserId,OperationType,MenuName,Action,Contents,IP)
    VALUES (@userName, @userId, @operationType, @menuName, @action, @contents, @IP);
  </commandText>

  <!-- parameters for the command -->     
  <!--日記來源-->
  <!--<parameter name="@origin" layout="${callsite}" />
  --><!--日誌級別--><!--
  <parameter name="@levels" layout="${level}" />
  --><!--異常信息--><!--
  <parameter name="@message" layout="${message}" />
  --><!--堆棧信息--><!--
  <parameter name="@stacktrace" layout="${stacktrace}" />-->

  <parameter name="@userName" layout="${event-context:item=userName}" />
  <parameter name="@userId" layout="${event-context:item=userId}" />
  <parameter name="@operationType" layout="${event-context:item=operationType}" />
  <parameter name="@menuName" layout="${event-context:item=menuName}" />
  <parameter name="@action" layout="${event-context:item=action}" />
  <parameter name="@contents" layout="${event-context:item=contents}" />
  <parameter name="@IP" layout="${event-context:item=IP}" />   
</target>

<!-- write log message to mail -->
<!--<target xsi:type="Mail" name="infoMail"
        smtpServer="smtp.qq.com"
        smtpPort="25"
        smtpAuthentication="Basic"
        smtpUserName="郵箱帳號"
        smtpPassword="郵箱密碼"
        enableSsl="true"
        addNewLines="true"
        from="發送郵箱"
        to="接收郵箱"
        subject="xx系統錯誤日誌"
        header="======================================="
        body="
        ${newline}時間: ${longdate}
        ${newline}來源: ${callsite}
        ${newline}等級: ${level}
        ${newline}信息: ${message}
        ${newline}堆棧: ${event-context:item=exception} ${stacktrace}"
        footer="=======================================" />-->
    </targets>
<rules>
<logger name="*" writeTo="console" />
<logger name="*" writeTo="file" />
<logger name="*" writeTo="database"/>
<!--<logger name="*" minlevel="Error" writeTo="infoMail" />-->
</rules>
</nlog>



配置文件包括以下,若是須要擴展,能夠本身方法。app

此配置是異步寫入,按年、月、日、分紅級別日誌。異步

  1. 寫入文件
  2. 寫入數據庫
  3. 控制檯顯示
  4. 錯誤郵件提示

總結

我主要是用來是系統日誌,配置方便簡潔,效率也很高,就是這麼酸爽。async

相關文章
相關標籤/搜索