亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? loggingevent.cs

?? 詳細講述了數據庫編程
?? CS
?? 第 1 頁 / 共 4 頁
字號:
		/// <c>false</c>.
		/// </para>
		/// <para>
		/// See <see cref="FixVolatileData(bool)"/> for more
		/// information.
		/// </para>
		/// </remarks>
		[Obsolete("Use Fix property")]
		public void FixVolatileData()
		{
			Fix = FixFlags.All;
		}

		/// <summary>
		/// Fixes instance fields that hold volatile data.
		/// </summary>
		/// <param name="fastButLoose">Set to <c>true</c> to not fix data that takes a long time to fix.</param>
		/// <remarks>
		/// <para>
		/// Some of the values in instances of <see cref="LoggingEvent"/>
		/// are considered volatile, that is the values are correct at the
		/// time the event is delivered to appenders, but will not be consistent
		/// at any time afterwards. If an event is to be stored and then processed
		/// at a later time these volatile values must be fixed by calling
		/// <see cref="FixVolatileData()"/>. There is a performance penalty
		/// for incurred by calling <see cref="FixVolatileData()"/> but it
		/// is essential to maintaining data consistency.
		/// </para>
		/// <para>
		/// The <paramref name="fastButLoose"/> param controls the data that
		/// is fixed. Some of the data that can be fixed takes a long time to 
		/// generate, therefore if you do not require those settings to be fixed
		/// they can be ignored by setting the <paramref name="fastButLoose"/> param
		/// to <c>true</c>. This setting will ignore the <see cref="LocationInformation"/>
		/// and <see cref="UserName"/> settings.
		/// </para>
		/// <para>
		/// Set <paramref name="fastButLoose"/> to <c>false</c> to ensure that all 
		/// settings are fixed.
		/// </para>
		/// </remarks>
		[Obsolete("Use Fix property")]
		public void FixVolatileData(bool fastButLoose)
		{
			if (fastButLoose)
			{
				Fix = FixFlags.Partial;
			}
			else
			{
				Fix = FixFlags.All;
			}
		}

		/// <summary>
		/// Fix the fields specified by the <see cref="FixFlags"/> parameter
		/// </summary>
		/// <param name="flags">the fields to fix</param>
		/// <remarks>
		/// <para>
		/// Only fields specified in the <paramref name="flags"/> will be fixed.
		/// Fields will not be fixed if they have previously been fixed.
		/// It is not possible to 'unfix' a field.
		/// </para>
		/// </remarks>
		protected void FixVolatileData(FixFlags flags)
		{
			object forceCreation = null;

			//Unlock the cache so that new values can be stored
			//This may not be ideal if we are no longer in the correct context
			//and someone calls fix. 
			m_cacheUpdatable=true;

			// determine the flags that we are actually fixing
			FixFlags updateFlags = (FixFlags)((flags ^ m_fixFlags) & flags);

			if (updateFlags > 0) 
			{
				if ((updateFlags & FixFlags.Message) != 0)
				{
					// Force the message to be rendered
					forceCreation = this.RenderedMessage;

					m_fixFlags |= FixFlags.Message;
				}
				if ((updateFlags & FixFlags.ThreadName) != 0)
				{
					// Grab the thread name
					forceCreation = this.ThreadName;

					m_fixFlags |= FixFlags.ThreadName;
				}

				if ((updateFlags & FixFlags.LocationInfo) != 0)
				{
					// Force the location information to be loaded
					forceCreation = this.LocationInformation;

					m_fixFlags |= FixFlags.LocationInfo;
				}
				if ((updateFlags & FixFlags.UserName) != 0)
				{
					// Grab the user name
					forceCreation = this.UserName;

					m_fixFlags |= FixFlags.UserName;
				}
				if ((updateFlags & FixFlags.Domain) != 0)
				{
					// Grab the domain name
					forceCreation = this.Domain;

					m_fixFlags |= FixFlags.Domain;
				}
				if ((updateFlags & FixFlags.Identity) != 0)
				{
					// Grab the identity
					forceCreation = this.Identity;

					m_fixFlags |= FixFlags.Identity;
				}

				if ((updateFlags & FixFlags.Exception) != 0)
				{
					// Force the exception text to be loaded
					forceCreation = GetExceptionString();

					m_fixFlags |= FixFlags.Exception;
				}

				if ((updateFlags & FixFlags.Properties) != 0)
				{
					CacheProperties();

					m_fixFlags |= FixFlags.Properties;
				}
			}

			// avoid warning CS0219
			if (forceCreation != null) 
			{
			}

			//Finaly lock everything we've cached.
			m_cacheUpdatable=false;
		}

		#endregion Public Instance Methods

		#region Protected Instance Methods

		private void CreateCompositeProperties()
		{
			m_compositeProperties = new CompositeProperties();

			if (m_eventProperties != null)
			{
				m_compositeProperties.Add(m_eventProperties);
			}
#if !NETCF
			PropertiesDictionary logicalThreadProperties = LogicalThreadContext.Properties.GetProperties(false);
			if (logicalThreadProperties != null)
			{
				m_compositeProperties.Add(logicalThreadProperties);
			}
#endif
			PropertiesDictionary threadProperties = ThreadContext.Properties.GetProperties(false);
			if (threadProperties != null)
			{
				m_compositeProperties.Add(threadProperties);
			}

			// TODO: Add Repository Properties

			m_compositeProperties.Add(GlobalContext.Properties.GetReadOnlyProperties());
		}

		private void CacheProperties()
		{
			if (m_data.Properties == null  && this.m_cacheUpdatable)
			{
				if (m_compositeProperties == null)
				{
					CreateCompositeProperties();
				}

				PropertiesDictionary flattenedProperties = m_compositeProperties.Flatten();

				PropertiesDictionary fixedProperties = new PropertiesDictionary();

				// Validate properties
				foreach(DictionaryEntry entry in flattenedProperties)
				{
					string key = entry.Key as string;

					if (key != null)
					{
						object val = entry.Value;

						// Fix any IFixingRequired objects
						IFixingRequired fixingRequired = val as IFixingRequired;
						if (fixingRequired != null)
						{
							val = fixingRequired.GetFixedObject();
						}

						// Strip keys with null values
						if (val != null)
						{
							fixedProperties[key] = val;
						}
					}
				}

				m_data.Properties = fixedProperties;
			}
		}

		/// <summary>
		/// Lookup a composite property in this event
		/// </summary>
		/// <param name="key">the key for the property to lookup</param>
		/// <returns>the value for the property</returns>
		/// <remarks>
		/// <para>
		/// This event has composite properties that combine together properties from
		/// several different contexts in the following order:
		/// <list type="definition">
		///		<item>
		/// 		<term>this events properties</term>
		/// 		<description>
		/// 		This event has <see cref="Properties"/> that can be set. These 
		/// 		properties are specific to this event only.
		/// 		</description>
		/// 	</item>
		/// 	<item>
		/// 		<term>the thread properties</term>
		/// 		<description>
		/// 		The <see cref="ThreadContext.Properties"/> that are set on the current
		/// 		thread. These properties are shared by all events logged on this thread.
		/// 		</description>
		/// 	</item>
		/// 	<item>
		/// 		<term>the global properties</term>
		/// 		<description>
		/// 		The <see cref="GlobalContext.Properties"/> that are set globally. These 
		/// 		properties are shared by all the threads in the AppDomain.
		/// 		</description>
		/// 	</item>
		/// </list>
		/// </para>
		/// </remarks>
		public object LookupProperty(string key)
		{
			if (m_data.Properties != null)
			{
				return m_data.Properties[key];
			}
			if (m_compositeProperties == null)
			{
				CreateCompositeProperties();
			}
			return m_compositeProperties[key];
		}

		/// <summary>
		/// Get all the composite properties in this event
		/// </summary>
		/// <returns>the <see cref="PropertiesDictionary"/> containing all the properties</returns>
		/// <remarks>
		/// <para>
		/// See <see cref="LookupProperty"/> for details of the composite properties 
		/// stored by the event.
		/// </para>
		/// <para>
		/// This method returns a single <see cref="PropertiesDictionary"/> containing all the
		/// properties defined for this event.
		/// </para>
		/// </remarks>
		public PropertiesDictionary GetProperties()
		{
			if (m_data.Properties != null)
			{
				return m_data.Properties;
			}
			if (m_compositeProperties == null)
			{
				CreateCompositeProperties();
			}
			return m_compositeProperties.Flatten();
		}

		#endregion Public Instance Methods

		#region Private Instance Fields

		/// <summary>
		/// The internal logging event data.
		/// </summary>
		private LoggingEventData m_data;

		/// <summary>
		/// The internal logging event data.
		/// </summary>
		private CompositeProperties m_compositeProperties;

		/// <summary>
		/// The internal logging event data.
		/// </summary>
		private PropertiesDictionary m_eventProperties;

		/// <summary>
		/// The fully qualified Type of the calling 
		/// logger class in the stack frame (i.e. the declaring type of the method).
		/// </summary>
		private readonly Type m_callerStackBoundaryDeclaringType;

		/// <summary>
		/// The application supplied message of logging event.
		/// </summary>
		private readonly object m_message;

		/// <summary>
		/// The exception that was thrown.
		/// </summary>
		/// <remarks>
		/// This is not serialized. The string representation
		/// is serialized instead.
		/// </remarks>
		private readonly Exception m_thrownException;

		/// <summary>
		/// The repository that generated the logging event
		/// </summary>
		/// <remarks>
		/// This is not serialized.
		/// </remarks>
		private ILoggerRepository m_repository = null;

		/// <summary>
		/// The fix state for this event
		/// </summary>
		/// <remarks>
		/// These flags indicate which fields have been fixed.
		/// Not serialized.
		/// </remarks>
		private FixFlags m_fixFlags = FixFlags.None;

		/// <summary>
		/// Indicated that the internal cache is updateable (ie not fixed)
		/// </summary>
		/// <remarks>
		/// This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler
		/// changes in the caching strategy.
		/// </remarks>
		private bool m_cacheUpdatable = true;

		#endregion Private Instance Fields

		#region Constants

		/// <summary>
		/// The key into the Properties map for the host name value.
		/// </summary>
		public const string HostNameProperty = "log4net:HostName";

		/// <summary>
		/// The key into the Properties map for the thread identity value.
		/// </summary>
		public const string IdentityProperty = "log4net:Identity";

		/// <summary>
		/// The key into the Properties map for the user name value.
		/// </summary>
		public const string UserNameProperty = "log4net:UserName";

		#endregion
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频免费观看高清完整版在线观看| 久久久www成人免费无遮挡大片| 欧美一区二区三区人| 国产欧美日韩久久| 亚洲成人7777| 成人福利在线看| 日韩欧美中文字幕公布| 日韩理论片网站| 国产成人三级在线观看| 欧美日本一区二区| 亚洲欧美一区二区三区久本道91 | 成人午夜电影久久影院| 欧美日韩在线播放三区| 中文字幕在线观看一区| 精品一区二区久久| 日韩免费视频线观看| 亚洲福利视频一区二区| 97se亚洲国产综合在线| 欧美国产亚洲另类动漫| 国产麻豆视频精品| 精品免费一区二区三区| 秋霞影院一区二区| 91精品国产色综合久久不卡蜜臀| 亚洲高清一区二区三区| 欧美无乱码久久久免费午夜一区| 日韩一区在线看| 92精品国产成人观看免费| 中文字幕av在线一区二区三区| 国产精品911| 国产日韩欧美综合在线| 高清在线不卡av| 中日韩免费视频中文字幕| 成人黄页在线观看| 欧美激情一区三区| 91视频在线看| 一级女性全黄久久生活片免费| 日本乱人伦一区| 亚洲午夜免费电影| 91精品国产美女浴室洗澡无遮挡| 日韩主播视频在线| 精品国产污网站| 国产高清精品在线| 亚洲欧美日韩国产一区二区三区| 91国偷自产一区二区三区成为亚洲经典 | 国产在线不卡视频| 国产日韩欧美精品在线| www..com久久爱| 亚洲精品高清在线| 5566中文字幕一区二区电影| 麻豆精品视频在线观看视频| 久久久亚洲国产美女国产盗摄 | 欧美成人女星排行榜| 国产一区二区美女诱惑| 中文av字幕一区| 欧美日韩黄色一区二区| 日本不卡的三区四区五区| 国产亚洲精品7777| 色成年激情久久综合| 免播放器亚洲一区| 国产精品乱码一区二区三区软件| 91福利在线播放| 久久爱www久久做| 国产精品欧美一区二区三区| 欧美网站一区二区| 国产盗摄一区二区三区| 亚洲一区精品在线| 欧美xxxxx牲另类人与| 99精品久久只有精品| 蜜桃久久精品一区二区| 亚洲日韩欧美一区二区在线| 91精品国产综合久久国产大片| 国产成人av福利| 亚洲福利电影网| 国产精品美女久久久久久| 欧美精品 国产精品| 成人亚洲一区二区一| 日韩高清一级片| 亚洲同性gay激情无套| 日韩精品一区二区三区视频| 色婷婷精品大在线视频| 国产精品99久久久久久久vr| 午夜久久久久久| 综合欧美亚洲日本| www日韩大片| 欧美高清视频一二三区| 一本到不卡精品视频在线观看| 激情文学综合网| 亚欧色一区w666天堂| 亚洲欧洲一区二区三区| 久久综合av免费| 91精品国产91久久综合桃花| 91丨九色丨尤物| 国产成人精品三级麻豆| 久久91精品国产91久久小草| 亚洲一区二区三区四区不卡| 亚洲同性同志一二三专区| 久久精品亚洲麻豆av一区二区| 日韩亚洲欧美中文三级| 欧美揉bbbbb揉bbbbb| 95精品视频在线| 99久久久精品| 成人app网站| 国产91丝袜在线观看| 国模冰冰炮一区二区| 久久精品二区亚洲w码| 午夜精品123| 亚洲国产精品综合小说图片区| 中文字幕中文乱码欧美一区二区| 国产亚洲女人久久久久毛片| 日韩欧美一区二区在线视频| 在线电影院国产精品| 欧美性生活久久| 欧美四级电影网| 欧美午夜一区二区三区免费大片| av电影在线观看一区| 99久久婷婷国产综合精品| 99国产欧美另类久久久精品| 国产99久久久国产精品潘金| 国产成人夜色高潮福利影视| 福利电影一区二区| 成人一级视频在线观看| 成人亚洲一区二区一| 成人sese在线| 色女孩综合影院| 91久久精品一区二区三区| 91最新地址在线播放| 国产精品123| eeuss鲁片一区二区三区| 99久久国产综合精品色伊| 色综合咪咪久久| 欧美视频自拍偷拍| 678五月天丁香亚洲综合网| 欧美一级久久久久久久大片| 欧美变态口味重另类| 国产婷婷精品av在线| 亚洲精品综合在线| 亚洲成人免费视频| 久久疯狂做爰流白浆xx| 成人一区二区三区| 欧美男男青年gay1069videost| 欧美大片一区二区三区| 中文字幕av免费专区久久| 亚洲黄色在线视频| 老司机精品视频在线| 成人精品视频网站| 欧美另类久久久品| 久久精品亚洲精品国产欧美 | 国产麻豆9l精品三级站| www.欧美.com| 日韩一区二区高清| 国产人伦精品一区二区| 亚洲一区二区欧美| 国产成人精品午夜视频免费| 在线免费精品视频| 精品国产一区久久| 一卡二卡欧美日韩| 国产在线国偷精品产拍免费yy| 91在线精品秘密一区二区| 日韩欧美区一区二| 亚洲欧美aⅴ...| 狠狠色狠狠色综合系列| 欧美制服丝袜第一页| 久久你懂得1024| 午夜天堂影视香蕉久久| www.av精品| 久久久99久久| 日韩国产一二三区| eeuss鲁片一区二区三区在线看 | 欧美性猛交xxxx乱大交退制版 | 成人性生交大片免费看中文网站| 欧洲另类一二三四区| 久久日一线二线三线suv| 亚洲国产精品一区二区久久| 成人性视频免费网站| 欧美精品在线视频| 国产精品色婷婷久久58| 蜜桃视频在线一区| 欧美精品第1页| 一区二区三区 在线观看视频| 国产成人亚洲综合a∨婷婷| 欧美成人在线直播| 三级欧美在线一区| 在线观看欧美黄色| 亚洲人妖av一区二区| 国产成人av电影在线| 26uuu亚洲综合色| 美女视频黄 久久| 69久久99精品久久久久婷婷| 亚洲福利视频三区| 欧美亚洲综合网| 一级女性全黄久久生活片免费| 99re这里都是精品| 国产精品久久久久久福利一牛影视 | 国产sm精品调教视频网站| 欧美成人乱码一区二区三区| 裸体健美xxxx欧美裸体表演| 在线电影院国产精品| 日韩av成人高清| 日韩一区二区三区四区| 久久电影网电视剧免费观看|