Exemplo n.º 1
0
		/// <summary>
		/// 重载 OnClose, 在基础实现的基础上停止缓冲刷新线程。
		/// </summary>
		protected override void OnClose()
		{
			this.isClosed = true;

			if (this.Enable)
			{
				lock (this)
				{
					// 注册触发性任务以定时输出日志
					if (this.task != null)
					{
						// 这里不需要取消任务的注册,而是让任务自己通过发现其相关 appender 已经关闭并将 nextExecuteTime 设为 null 来主动取消
						// 因为这里调用 UnregisterTriggerTask 有可能造成死锁,参见: TriggerTaskHostBase.UnregisterTriggerTask、TriggerTaskHostBase.Execute
						// XMS.Core.Tasks.TaskManager.Instance.DefaultTriggerTaskHost.UnregisterTriggerTask(this.task.Key);

						this.task = null;
					}

					// 输出缓冲区中的所有日志
					this.Flush();

					base.OnClose();
				}
			}
		}
Exemplo n.º 2
0
		/// <summary>
		/// 重载 ActivateOptions, 在基础实现的基础上启动缓冲刷新线程。
		/// </summary>
		public override void ActivateOptions()
		{
			if (this.Enable)
			{
				base.ActivateOptions();

				this.is4Demo = this.Name.Equals("demo", StringComparison.InvariantCultureIgnoreCase);

				// 注册触发性任务以定时输出日志
				if (!this.is4Demo)
				{
					this.task = new FlushingLogTask(this, this.FlushInterval);

					XMS.Core.Tasks.TaskManager.Instance.DefaultTriggerTaskHost.RegisterTriggerTask(this.task);
				}
			}
		}