2、Core3.1集成log4Net

       1、nuget添加下引用引用log4net框架:

 

      2、在根目錄下 創建配置文件log4net.Config,配置可參考如下

<?xml version="1.0" encoding="utf-8"?>
<log4net>
  <!--指定日記記錄方式,以滾動文件的方式(文件記錄)-->
    <appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
    <!--日誌路徑-->
        <file value="log\log.txt" />
        <!--追加日誌內容-->
        <appendToFile value="true" />

        <!--防止多線程時不能寫Log,官方說線程非安全-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />

        <!--可以爲:Once|Size|Date|Composite-->
        <!--Composite爲Size和Date的組合-->
        <rollingStyle value="Composite" />

        <!--當備份文件時,爲文件名加的後綴-->
        <datePattern value="yyyyMMdd.TXT" />

    <!--log保留天數-->
        <maxSizeRollBackups value="20" />
    
    <!--每個文件最大3M 可用的單位:KB|MB|GB-->
        <maximumFileSize value="3MB" />

    <!--日誌文件名是否是固定不變的-->
        <staticLogFileName value="true" />
    <!--日誌根據日期滾動-->
    <param name= "RollingStyle" value= "Date"/>
    
        <!--輸出級別在INFO和ERROR之間的日誌-->
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ALL" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    <!--佈局-->
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/>
        </layout>
    </appender>
    <root>
        <priority value="ALL"/>
    <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) -->
    <!--限制日誌記錄級別-->
        <level value="ALL"/>
        <appender-ref ref="rollingAppender" />

    <!--將日誌輸出到文件-->
    <!--<appender-ref ref="FileAppender"/>-->
    <!--將日誌輸出到應用程序控制臺-->
    <!--<appender-ref ref="ConsoleAppender"/>-->
    <!--將日誌寫到郵件中-->
    <!--<appender-ref ref="LogSmtpAppender"/>-->
    <!--將日誌記錄到數據庫中。可以採用SQL和存儲過程兩種方式-->
    <!--<appender-ref ref="AdoNetAppender"/>-->
    <!--可以同時設置多個輸出對象,沒用到可以註釋-->
    <!--將日誌寫到local syslog service (僅用於UNIX環境下)。-->
    <!--<appender-ref ref="LocalSyslogAppender"/>-->
    </root>
  <!--發郵件-->
  <appender name="LogSmtpAppender" type="log4net.Appender.SmtpAppender">
   <authentication value="Basic" />
   <!--接受郵件的郵箱-->
   <to value="[email protected]" />
   <!--發送郵件的郵箱-->
   <from value="[email protected]" />
   <!--發送郵件的郵箱-->
   <username value="[email protected]" />
   <!--發送郵件的郵箱密碼-->
   <password value="123456" />
   <!--標題-->
   <subject value="XXX應用錯誤日誌消息" />
   <!--smtp.qq.com-->
   <smtpHost value="smtp.126.com" />
   <bufferSize value="2048" />
   <!--超長部分是否丟棄-->
   <lossy value="true" />
   <!--日誌級別 大於 WARN 的才發郵件-->
   <evaluator type="log4net.Core.LevelEvaluator">
    <threshold value="ERROR"/>
   </evaluator>
   <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value=" %level :: %message %newlineLogger: %logger%newline Date: %date%newline" />
   </layout>
  </appender>
  <!-- 控制檯日誌 -->
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%n%d{yyyy-MM-dd HH:mm:ss} %m%n" />
    </layout>
    <!--指定範圍內的等級纔可以被記錄-->
    <!--<filter type="log4net.Filter.LevelRangeFilter">
    <param name="LevelMin" value="Info" />
    <param name="LevelMax" value="Fatal" />
   </filter>-->
  </appender >

  
  <!--數據庫日記-->
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <!--設置爲1方便查看結果,處於性能考慮這裏的值應該略大一點,官方默認值是100,BufferSize爲緩衝區大小,只有日誌記錄超設定值纔會一塊寫入到數據庫-->
    <bufferSize value="1" />
    <!--sqlserver 引用-->
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <!--連接數據庫字符串-->
    <connectionString value="data source=.;initial catalog=test;integrated security=false;persist security info=True;User ID=sa;Password=sqlserver;" />
    <!--插入到表Log-->
    <commandText value="INSERT INTO LogTest ([Date],[Level],[Logger],[Message],[Exception],[Description],[ObjType]) VALUES (@log_date,@log_level, @logger, @message, @exception,@Description,@ObjType)" />
    <!--所有參數-->
    <parameter>
      <parameterName value="@log_date" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.RawTimeStampLayout" />
    </parameter>
    <parameter>
      <parameterName value="@log_level" />
      <dbType value="String" />
      <size value="50" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level" />
      </layout>
    </parameter>
    <!--類所在位置-->
    <parameter>
      <parameterName value="@logger" />
      <dbType value="String" />
      <size value="255" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%logger" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@message" />
      <dbType value="String" />
      <size value="4000" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@exception" />
      <dbType value="String" />
      <size value="2000" />
      <layout type="log4net.Layout.ExceptionLayout" />
    </parameter>
    <!--自定義輸入字段-->
    <parameter>
      <parameterName value = "@Description"/>
      <dbType value = "String"/>
      <size value = "50"/>
      <layout type = "log4_Test.Log4netExpand.ExpandLayout">
        <conversionPattern value = "%property{Description}"/>
      </layout>
    </parameter>
    <parameter>
      <parameterName value = "@ObjType"/>
      <dbType value = "String"/>
      <size value = "50"/>
      <layout type = "log4_Test.Log4netExpand.ExpandLayout">
        <conversionPattern value = "%property{ObjType}"/>
      </layout>
    </parameter>
  </appender>
</log4net>

      3、 集成方式

           (1)方式一:在Program中註冊

         (2)方式二: 在Startup中註冊

         (3)方式三:自主獲取封裝

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章