winform--使用log4net日志記錄--配置和使用


1,添加引用 log4net

2,在項目Properties->AssemblyInfo.cs文件中 添加[assembly: log4net.Config.XmlConfigurator()]

//log4net配置(第一種方式)
//在項目Properties->AssemblyInfo.cs文件中 添加[assembly: log4net.Config.XmlConfigurator()]
[assembly: log4net.Config.XmlConfigurator()]

//log4net配置(第二種方式)
//[assembly: log4net.Config.DOMConfigurator(ConfigFileExtension = "config", Watch = true)]
//[assembly: log4net.Config.DOMConfigurator(ConfigFile = "filename", ConfigFileExtension = "ext", Watch = true / false)]
//參數可以省略

//ConfigFile:指出了我們的配置文件的路徑及文件名,包括擴展名。可省略
//configfileextension:如果我們對被編譯程序的程序集使用了不同的文件擴展名,那么我們需要定義這個屬性,缺省的,程序集的配置文件擴展名為”config”。
//watch(boolean屬性) : log4net框架用這個屬性來確定是否需要在運行時監視文件的改變。如果這個屬性為true,那么filesystemwatcher將會被用來監視文件的改變,重命名,刪除等事件。

3,找到App.config。如果沒有這個配置文件,就右鍵添加 應用程序配置文件

 

 4,在App.config中<configuration> </configuration>添加,

  <!--在配置選項中加入log4net的引用-->
<!--特別注意:configSections必須放在configuration的下面的位置--> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <!--root:定義日志輸出的方式和等級--> <root> <!--控制級別,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄--> <!--如果沒有定義LEVEL的值,則缺省為DEBUG--> <level value="ALL" /><!--定義輸出的信息等級為所有其中包括Fatal.Error.Warn.Info.Debug--> <!--文件形式記錄日志--> <appender-ref ref="LogFileAppender" /> </root> <!--定義logger對象的名字為logApp,以方便在代碼中使用,<logger>配置項可以不配置--> <logger name="Logging"> <level value="DEBUG" /> </logger> <!--個配置文件可以有很多appender,一個appender節就相當於一個日志輸出介質或方法。--> <!-- 定義輸出到文件中 --> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定義文件存放位置--> <file value="Log/" /> <!--是否追加到文件,默認為true,通常無需設置--> <appendToFile value="true" /> <!--變換的形式為日期,這種情況下每天只有一個日志--> <!--此時MaxSizeRollBackups和maximumFileSize的節點設置沒有意義--> <rollingStyle value="Date" /> <!--變換的形式為日志大小--> <!--這種情況下MaxSizeRollBackups和maximumFileSize的節點設置才有意義--> <!--<rollingStyle value="Size"/>--> <!--這是按日期產生文件夾,並在文件名前也加上日期--> <!--日期的格式,每天換一個文件記錄,如不設置則永遠只記錄一天的日志,需設置--> <datePattern value="yyyy-MM-dd&quot;.log&quot;"/> <!--日志最大可備份數,每天記錄的日志文件個數,與maximumFileSize配合使用--> <maxSizeToRollBackups value="-1" /> <!--每個日志文件的最大大小--> <!--可用的單位:KB|MB|GB--> <!--不要使用小數,否則會一直寫入當前日志--> <maximumFileSize value="10MB" /> <staticLogFileName value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <!--每條日志末尾的文字說明--> <!--輸出格式--> <!--樣例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <conversionPattern value="%d - 線程ID:[%thread] - %-5level - %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net>

格式說明:

 

 

5,

//TypeLog Log = new TypeLog();//用這種方式,要引入自定義TypeLog類
public static readonly log4net.ILog log = log4net.LogManager.GetLogger("Logging"); //Logging 名字要在 App.config 中能找到

 

    public class TypeLog
    {
        log4net.ILog log_fatal = log4net.LogManager.GetLogger("fatal");
        log4net.ILog log_error = log4net.LogManager.GetLogger("error");
        log4net.ILog log_warn = log4net.LogManager.GetLogger("warn");
        log4net.ILog log_info = log4net.LogManager.GetLogger("info");
        log4net.ILog log_debug = log4net.LogManager.GetLogger("debug");

        public void Fatal(string fatal, Exception e)
        {
            log_info.Fatal(fatal, e);
        }
        public void Error(string error_info, Exception t)
        {
            log_error.Error(error_info, t);
        }
        public void Warn(string warn_info)
        {
            log_error.Warn(warn_info);
        }
        public void Info(string info)
        {
            log_info.Info(info);
        }
        public void Debug(string debug_info)
        {
            log_info.Debug(debug_info);
        }
    }

6,使用

log.Warn($"人工確認第{number}個螺絲擰緊OK");

//Log.Info($"人工確認第{number}個螺絲擰緊OK")

7,日志記錄

2020-03-14 15:03:59,927 - 線程ID:[1] - WARN - 人工確認第1個螺絲擰緊OK
2020-03-14 15:04:01,899 - 線程ID:[1] - WARN - 人工確認第2個螺絲擰緊NG
2020-03-14 15:04:04,587 - 線程ID:[1] - WARN - 人工確認第2個螺絲擰緊OK
2020-03-14 15:04:06,639 - 線程ID:[1] - WARN - 人工確認第3個螺絲擰緊OK
2020-03-14 15:04:08,291 - 線程ID:[1] - WARN - 人工確認第4個螺絲擰緊NG
2020-03-14 15:04:09,856 - 線程ID:[1] - WARN - 人工確認第4個螺絲擰緊NG
2020-03-14 15:04:11,105 - 線程ID:[1] - WARN - 人工確認第4個螺絲擰緊OK

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM