欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# log4net 日志輸出的實(shí)現(xiàn)示例

 更新時間:2021年10月22日 09:57:00   作者:letisgo5  
本文主要介紹了C# log4net 日志輸出的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

思路:
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&quot;.txt&quot;"/>
			<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)閉

    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-01
  • C# WINFORM 強(qiáng)制讓窗體獲得焦點(diǎn)的方法代碼

    C# WINFORM 強(qiáng)制讓窗體獲得焦點(diǎn)的方法代碼

    C# WINFORM 強(qiáng)制讓窗體獲得焦點(diǎn)的方法代碼,需要的朋友可以參考一下
    2013-04-04
  • C#利用緩存分塊讀寫大文件

    C#利用緩存分塊讀寫大文件

    這篇文章主要為大家詳細(xì)介紹了C#利用緩存分塊讀寫大文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 基于Unity3D實(shí)現(xiàn)3D照片墻效果

    基于Unity3D實(shí)現(xiàn)3D照片墻效果

    Unity3D不僅僅可以開發(fā)游戲,還有非常多的開發(fā)方向。本文就將用Unity3D制作出一個3D照片墻的效果,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-03-03
  • Unity學(xué)習(xí)之FSM有限狀態(tài)機(jī)

    Unity學(xué)習(xí)之FSM有限狀態(tài)機(jī)

    這篇文章主要介紹了Unity學(xué)習(xí)之FSM有限狀態(tài)機(jī),通過詳細(xì)的代碼案例來進(jìn)行解析說明,希望這篇文章對你有所幫助
    2021-06-06
  • C#實(shí)現(xiàn)簡單的登錄界面

    C#實(shí)現(xiàn)簡單的登錄界面

    我們在使用C#做項(xiàng)目的時候,基本上都需要制作登錄界面,那么今天我們就來一步步看看,如果簡單的實(shí)現(xiàn)登錄界面呢,本文給出2個例子,由簡入難,希望大家能夠喜歡。
    2015-11-11
  • C#數(shù)據(jù)導(dǎo)入到EXCEL的方法

    C#數(shù)據(jù)導(dǎo)入到EXCEL的方法

    今天小編就為大家分享一篇關(guān)于C#數(shù)據(jù)導(dǎo)入到EXCEL的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C#中BitmapImage與BitmapSource接口的區(qū)別對比小結(jié)

    C#中BitmapImage與BitmapSource接口的區(qū)別對比小結(jié)

    BitmapImage和BitmapSource都可以用于表示和顯示圖像,本文就來介紹一下C#中BitmapImage與BitmapSource接口的區(qū)別對比,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • C#常見應(yīng)用函數(shù)實(shí)例小結(jié)

    C#常見應(yīng)用函數(shù)實(shí)例小結(jié)

    這篇文章主要介紹了C#常見應(yīng)用函數(shù),結(jié)合實(shí)例形式總結(jié)分析了C#常用的時間、URL、HTML、反射、小數(shù)運(yùn)算等相關(guān)函數(shù),需要的朋友可以參考下
    2017-01-01
  • C#中重載重寫和覆蓋的定義與區(qū)別

    C#中重載重寫和覆蓋的定義與區(qū)別

    今天小編就為大家分享一篇關(guān)于C#中重載重寫和覆蓋的定義與區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10

最新評論