一、效果
-
記錄日志為文檔
-
記錄日志到數(shù)據(jù)庫
文章來源:http://www.zghlxwxcb.cn/news/detail-829538.html
二、添加NuGet包
文章來源地址http://www.zghlxwxcb.cn/news/detail-829538.html
三、log4net.config代碼配置
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!-- Debug日志 -->
<appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender" >
<!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
<file value="logs\\" />
<!-- 日志文件的命名規(guī)則 -->
<datePattern value="yyyy-MM-dd/'Debug.log'"/>
<!-- 將日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="3MB" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date"/>
<!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false -->
<staticLogFileName value="false" />
<!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%newline【日志時間】: %d 【線程ID】: %thread %newline【日志級別】: %-5p %newline【日志對象】:%logger %newline【日志內(nèi)容】:%m %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Debug" />
<param name="LevelMax" value="Debug" />
</filter>
</appender>
<!-- Info日志 -->
<appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender" >
<!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
<file value="logs\\" />
<!-- 日志文件的命名規(guī)則 -->
<datePattern value="yyyy-MM-dd/'Info.log'"/>
<!-- 將日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="3MB" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date"/>
<!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false -->
<staticLogFileName value="false" />
<!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內(nèi)容】:%m %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Info" />
</filter>
</appender>
<!-- WARN日志 -->
<appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender" >
<!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
<file value="logs\\" />
<!-- 日志文件的命名規(guī)則 -->
<datePattern value="yyyy-MM-dd/'Warn.log'"/>
<!-- 將日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="3MB" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date"/>
<!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false -->
<staticLogFileName value="false" />
<!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內(nèi)容】:%m %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Warn" />
<param name="LevelMax" value="Warn" />
</filter>
</appender>
<!-- Error日志 -->
<appender name="RollingFileError" type="log4net.Appender.RollingFileAppender" >
<!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
<file value="logs\\" />
<!-- 日志文件的命名規(guī)則 -->
<datePattern value="yyyy-MM-dd/'Error.log'"/>
<!-- 將日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="3MB" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date"/>
<!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false -->
<staticLogFileName value="false" />
<!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內(nèi)容】:%m %newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Error" />
<param name="LevelMax" value="Error" />
</filter>
</appender>
<!-- Fatal日志 -->
<appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender" >
<!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
<file value="logs\\" />
<!-- 日志文件的命名規(guī)則 -->
<datePattern value="yyyy-MM-dd/'Fatal.log'"/>
<!-- 將日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="3MB" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date"/>
<!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false -->
<staticLogFileName value="false" />
<!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%newline【日志時間】:%d 【線程ID】:%thread %newline【日志級別】:%-5p %newline【日志對象】:%logger %newline【日志內(nèi)容】:%m%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Fatal" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>
<!--數(shù)據(jù)庫配置-->
<appender name="logAppender_SqlServer" type="log4net.Appender.ADONetAppender">
<bufferSize value="0"/>
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<!--鏈接數(shù)據(jù)庫配置-->
<connectionString value="Data Source=xxxxxxxx;Initial Catalog=xxxxxxxx;User ID=sa;Password=********;"/>
<commandText value="INSERT INTO LogData ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
<parameter>
<parameterName value="@log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="@thread"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</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="200"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value="@message"/>
<dbType value="String"/>
<size value="2000"/>
<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>
</appender>
<root>
<!--控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄 如果沒有定義LEVEL的值,則缺省為DEBUG-->
<appender-ref ref="RollingFileDebug" />
<appender-ref ref="RollingFileInfo" />
<appender-ref ref="RollingFileWarn" />
<appender-ref ref="RollingFileError" />
<appender-ref ref="RollingFileFatal" />
<appender-ref ref="logAppender_SqlServer" />
<level value="DEBUG" />
</root>
</log4net>
到了這里,關于.NET Core WebAPI中使用Log4net 日志級別分類并記錄到數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!