C# log4net 日志輸出的實(shí)現(xiàn)示例
思路:
1.安裝插件:安裝log4net
2.使用配置:添加log4net.config配置文件
3.輸出日志文件格式:添加日志配置
4.AssemblyInfo.cs中配置
第一步:安裝log4net
第二步:添加log4net.config配置文件
新增log4net.config配置文件,內(nèi)容如下,與Program.cs同一目錄即可。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <!--level取值:OFF FATAL ERROR WARN INFO DEBUG ALL --> <logger name="loginfo"> <level value="ALL"/> <appender-ref ref="InfoAppender"/> </logger> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="log\\"/> <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> <param name="AppendToFile" value="true"/> <param name="MaxFileSize" value="10240"/> <param name="StaticLogFileName" value="false"/> <param name="DatePattern" value="yyyy-MM-dd".txt""/> <param name="RollingStyle" value="Date"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%p] - %m%n"/> </layout> </appender> </log4net> </configuration>
并設(shè)置 – 屬性 – 復(fù)制到輸出目錄為:始終復(fù)制
第三步:添加日志配置
在文件Program.cs應(yīng)用程序主入口加入:
LogUtils.SetConfig(new FileInfo(Application.StartupPath + @"\log4net.config"));
LogUtils.cs 寫入日志公共類
class LogUtils { private static readonly ILog loginfo = LogManager.GetLogger("loginfo"); /// <summary> /// 從缺省配置文件獲取日志配置 /// </summary> public static void SetConfig() { XmlConfigurator.Configure(); } /// <summary> /// 從指定配置文件獲取日志配置 /// </summary> /// <param name="configFile">指定的配置文件</param> public static void SetConfig(FileInfo configFile) { XmlConfigurator.Configure(configFile); } /// <summary> /// 生成分類日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="dirName">保存目錄名,形如d:\log\aaa</param> private static void WriteSortLog(string info, string dirName) { try { if (false == System.IO.Directory.Exists(dirName)) { System.IO.Directory.CreateDirectory(dirName); } string path = dirName + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.Default); sw.WriteLine(DateTime.Now.ToString("HH:mm:ss: ") + info); sw.Close(); } catch (Exception ex) { string expMsg = "WriteSortLog異常:" + ex.Message + Environment.NewLine + ex.StackTrace; if (ex.InnerException != null) expMsg += Environment.NewLine + "InnerException:" + ex.InnerException.Message; Error(expMsg, ex); } } /// <summary> /// Info級 常規(guī)日志 /// </summary> /// <param name="info">日志信息</param> public static void Info(string info) { if (loginfo.IsInfoEnabled) { loginfo.Info(info); } } /// <summary> /// Info 先生成常規(guī)日志,然后在指定目錄另外創(chuàng)建一份日志 /// 主要用來需要對日志進(jìn)行分類時使用 /// </summary> /// <param name="info"></param> /// <param name="dirName"></param> public static void Info(string info, string dirName) { if (loginfo.IsInfoEnabled) { //生成常規(guī)日志 loginfo.Info(info); //生成分類日志 WriteSortLog(info, dirName); } } /// <summary> /// Debug級 常規(guī)日志 /// </summary> /// <param name="info">日志信息</param> public static void Debug(string info) { if (loginfo.IsDebugEnabled) { loginfo.Debug(info); } } /// <summary> /// Debug級 異常日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="exp">異常信息</param> public static void Debug(string info, Exception exp) { if (loginfo.IsDebugEnabled) { loginfo.Debug(info, exp); } } /// <summary> /// Error級 常規(guī)的日志 /// </summary> /// <param name="info">日志信息</param> public static void Error(string info) { if (loginfo.IsErrorEnabled) { loginfo.Error(info); } } /// <summary> /// Error 異常日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="exp">異常信息</param> public static void Error(string info, Exception exp) { if (loginfo.IsErrorEnabled) { loginfo.Error(info, exp); } } /// <summary> /// Fatal級 常規(guī)日志 /// </summary> /// <param name="info">日志信息</param> public static void Fatal(string info) { if (loginfo.IsFatalEnabled) { loginfo.Fatal(info); } } /// <summary> /// Fatal級 異常日志 /// </summary> /// <param name="info">日志信息</param> /// <param name="exp">異常信息</param> public static void Fatal(string info, Exception exp) { if (loginfo.IsFatalEnabled) { loginfo.Fatal(info, exp); } } /// <summary> /// Warn級 常規(guī)日志 /// </summary> /// <param name="info">日志信息</param> public static void Warn(string info) { if (loginfo.IsWarnEnabled) { loginfo.Warn(info); } } /// <summary> /// Warn級 異常日志 /// </summary> /// <param name="info">日志</param> /// <param name="exp">異常信息</param> public static void Warn(string info, Exception exp) { if (loginfo.IsWarnEnabled) { loginfo.Warn(info, exp); } } }
第四步:AssemblyInfo.cs中配置 Watch = true
在項(xiàng)目Properties文件夾下AssemblyInfo.cs中加入:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
最后通過
LogUtils.Error(“錯誤日志”); LogUtils.Info(“正常輸出日志”); LogUtils.Warn(“溫馨提示日志”);
最后啟動項(xiàng)目:會在項(xiàng)目debug目錄下輸出日志文件夾log內(nèi)
到此這篇關(guān)于C# log4net 日志輸出的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# log4net 日志輸出內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用WMI實(shí)現(xiàn)監(jiān)聽進(jìn)程的啟動和關(guān)閉
Windows Management Instrumentation(WMI)是用于管理基于 Windows 操作系統(tǒng)的數(shù)據(jù)和操作的基礎(chǔ)結(jié)構(gòu),本文將使用WMI實(shí)現(xiàn)監(jiān)聽進(jìn)程的啟動和關(guān)閉,感興趣的可以了解下2024-01-01C# WINFORM 強(qiáng)制讓窗體獲得焦點(diǎn)的方法代碼
C# WINFORM 強(qiáng)制讓窗體獲得焦點(diǎn)的方法代碼,需要的朋友可以參考一下2013-04-04Unity學(xué)習(xí)之FSM有限狀態(tài)機(jī)
這篇文章主要介紹了Unity學(xué)習(xí)之FSM有限狀態(tài)機(jī),通過詳細(xì)的代碼案例來進(jìn)行解析說明,希望這篇文章對你有所幫助2021-06-06C#中BitmapImage與BitmapSource接口的區(qū)別對比小結(jié)
BitmapImage和BitmapSource都可以用于表示和顯示圖像,本文就來介紹一下C#中BitmapImage與BitmapSource接口的區(qū)別對比,具有一定的參考價值,感興趣的可以了解一下2024-03-03C#常見應(yīng)用函數(shù)實(shí)例小結(jié)
這篇文章主要介紹了C#常見應(yīng)用函數(shù),結(jié)合實(shí)例形式總結(jié)分析了C#常用的時間、URL、HTML、反射、小數(shù)運(yùn)算等相關(guān)函數(shù),需要的朋友可以參考下2017-01-01