安裝log4net
項目 - 管理Nuget程序包,在瀏覽框中輸入 log4net - 回車 - 選擇 log4net - 安裝。
添加log4net.config
在工程目錄下添加log4net.config文件, 設置log4net.config的文件屬性
,自動把log4net.config的內容復制到.exe文件所在的目錄
log4net.config源碼
修改AssemblyInfo.cs
在工程 - Properties - AssemblyInfo.cs文件中新增如下一行代碼:

使用
<?xml version="1.0" encoding="utf-8" ?> <!-- log4.net 官網,https://logging.apache.org/log4net/ 看官方文檔 C# 寫法 ////////////////這個配置記錄所有日志 <root> <level value="ALL" /> <appender-ref ref="SysAppender" /> </root> //////////////// public static readonly log4net.ILog logInfo = log4net.LogManager.GetLogger("mLog"); public static readonly log4net.ILog defined = log4net.LogManager.GetLogger("defined"); logInfo.Info("11"); logInfo.Error("22"); logInfo.Debug("33"); defined.Info("44"); defined.Error("55"); defined.Debug("66"); --> <configuration> <configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler" /> </configSections> <!--log4net配置文件--> <!-- 。。。。。。。。。。。控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF。。。。。。。。。。。 --> <log4net> <!-- <root>實際上就是一個根logger,所有其它logger都默認繼承它,如果配置文件里沒有顯式定義,則框架使用根日志中定義的屬性--> <root> <level value="ALL" /> <appender-ref ref="SysAppender" /><!--記錄到哪個介質中去--> </root> <!--log--> <logger name="mLog"> <level value="ALL"/> <appender-ref ref="InfoAppender"/> <appender-ref ref="ErrorAppender"/> <appender-ref ref="ConsoleAppender"/> </logger> <!--自定義的log--> <logger name="defined"> <level value="ALL" /> <appender-ref ref="defined"/> </logger> <!--根記錄log--> <appender name="SysAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路徑--> <File value="log/log_SysAppender.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--創建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--備份日志數目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不變的--> <StaticLogFileName value="true"/> <!--記錄日志寫入文件時,不鎖定文本文件,防止多線程時不能寫Log,官方說線程非安全--> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--輸出格式--> <layout type="log4net.Layout.PatternLayout"> <!--日期 [級別]--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只記錄級別在INFO-INFO之間的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ALL" /> <param name="LevelMax" value="OFF" /> </filter> </appender> <!--運行狀態信息--> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路徑--> <File value="log/log_info.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--創建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--備份日志數目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不變的--> <StaticLogFileName value="true"/> <!--記錄日志寫入文件時,不鎖定文本文件,防止多線程時不能寫Log,官方說線程非安全--> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--輸出格式--> <layout type="log4net.Layout.PatternLayout"> <!--日期 [級別]--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只記錄級別在INFO-INFO之間的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--運行錯誤信息--> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"> <!--日志路徑--> <File value="log/log_error.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--創建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--備份日志數目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不變的--> <StaticLogFileName value="true"/> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--輸出格式--> <layout type="log4net.Layout.PatternLayout"> <!--輸出格式--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只記錄級別在WARN-FATAL之間的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--控制台--> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d %-5p %c - %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--自定義信息--> <appender name="defined" type="log4net.Appender.RollingFileAppender"> <!--日志路徑--> <File value="log/log_defined.txt"/> <!--是否是向文件中追加日志--> <AppendToFile value="true"/> <!--創建新文件的方式--> <RollingStyle value="Size"/> <!--log文件大小--> <MaximumFileSize value="5M"/> <!--備份日志數目--> <MaxSizeRollBackups value="30"/> <!--日志文件名是否是固定不變的--> <StaticLogFileName value="true"/> <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> <!--輸出格式--> <layout type="log4net.Layout.PatternLayout"> <!--輸出格式--> <conversionPattern value="%d [%-5p] [%t%] -%m%n"/> </layout> <!--控制器,只記錄級別在WARN-FATAL之間的信息--> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net> </configuration>