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)方式三:自主獲取封裝