public static bool TryWriteAppLog(string message, string detail)
		{
			LogEntity logEntity = new LogEntity(message);

			logEntity.LogEventType = TraceEventType.Error;

			logEntity.EventID = ApplicationErrorEventID;
			logEntity.StackTrace = detail;

			HttpContext context = HttpContext.Current;

			try
			{
				if (context != null)
				{
					string[] paths = context.Request.ApplicationPath.Split('/');
					logEntity.Source = paths[paths.Length - 1];
					logEntity.Title = string.Format("{0}应用页面错误", context.Request.ApplicationPath);
					logEntity.ExtendedProperties.Add("RequestUrl", context.Request.Url.AbsoluteUri);
					logEntity.ExtendedProperties.Add("UserHostAddress", context.Request.UserHostAddress);

					if (HttpContext.Current.User != null)
					{
						logEntity.ExtendedProperties.Add("UserLogOnName", HttpContext.Current.User.Identity.Name);
					}
				}
			}
			catch
			{
			}

			return TryWriteAppLog(logEntity);
		}
예제 #2
0
		/// <summary>
		/// 将LogEntity对象格式化成XML串
		/// </summary>
		/// <param name="log">LogEntity对象</param>
		/// <returns>格式化好的XML串</returns>
		/// <remarks>
		/// 重载方法,实现格式化
		/// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\FormatterTest.cs"
		/// lang="cs" region="Format Test" tittle="获取Formatter对象"></code>
		/// </remarks>
		public override string Format(LogEntity log)
		{
			XElement root = new XElement("Root");

			Format(log, root);

			return root.ToString();
		}
예제 #3
0
        private static LogEntity CreateLogEntity(CacheNotifyData notifyData)
        {
            string message = string.Format("{0}",
                    notifyData.ToString()
                );

            LogEntity logEntity = new LogEntity(message);

            logEntity.EventID = 7005;
            logEntity.LogEventType = TraceEventType.Information;
            logEntity.Source = "MmfCache";
            logEntity.Title = "发送MmfCache";
            logEntity.Priority = LogPriority.Normal;

            return logEntity;
        }
 /// <summary>
 /// 重载方法,写入数据
 /// </summary>
 /// <param name="eventCache">包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 TraceEventCache 对象</param>
 /// <param name="source">标识输出时使用的名称,通常为生成跟踪事件的应用程序的名称</param>
 /// <param name="logEventType">TraceEventType枚举值,指定引发日志记录的事件类型</param>
 /// <param name="eventID">事件的数值标识符</param>
 /// <param name="data">要记录的日志数据</param>
 /// <remarks>
 /// 只有Formatter属性不为空时,才格式化
 /// <code source="..\Framework\src\DeluxeWorks.Library\Logging\Logger.cs" lang="cs" region="Process Log" title="写日志"></code>
 /// </remarks>
 public override void TraceData(TraceEventCache eventCache, string source, TraceEventType logEventType, int eventID, object data)
 {
     if (data is LogEntity)
     {
         LogEntity logData = data as LogEntity;
         if (this.Formatter != null)
         {
             this.slaveListener.TraceData(eventCache, source, logEventType, eventID, this.Formatter.Format(logData));
         }
         else
         {
             this.slaveListener.TraceData(eventCache, source, logEventType, eventID, logData);
         }
     }
     else
     {
         this.slaveListener.TraceData(eventCache, source, logEventType, eventID, data);
     }
 }
예제 #5
0
        /// <summary>
        /// 实现ICloneable接口
        /// </summary>
        /// <returns>
        /// 克隆出的LogEntity对象
        /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\LogEntityTest.cs"
        /// lang="cs" region="LogEntityClone Test" tittle="克隆LogEntity对象"></code>
        /// </returns>
        public object Clone()
        {
            LogEntity log = new LogEntity(this.Message);

            log.EventID      = this.EventID;
            log.Title        = this.Title;
            log.Priority     = this.Priority;
            log.LogEventType = this.LogEventType;
            log.MachineName  = this.MachineName;
            log.StackTrace   = this.StackTrace;
            log.ActivityID   = this.ActivityID;
            log.Source       = this.Source;

            if (this.extendedProperties != null)
            {
                log.extendedProperties = new Dictionary <string, object>(this.extendedProperties);
            }

            return(log);
        }
		public static bool TryWriteAppLog(LogEntity logEntity)
		{
			bool result = false;

			if (logEntity != null)
			{
				try
				{
					Logger logger = LoggerFactory.Create("webApplicationError");

					logger.Write(logEntity);
					result = true;
				}
				catch
				{
				}
			}

			return result;
		}
        /// <summary>
        /// 重载方法,写入数据
        /// </summary>
        /// <param name="eventCache">包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 TraceEventCache 对象</param>
        /// <param name="source">标识输出时使用的名称,通常为生成跟踪事件的应用程序的名称</param>
        /// <param name="eventType">TraceEventType枚举值,指定引发日志记录的事件类型</param>
        /// <param name="id">事件的数值标识符</param>
        /// <param name="data">要记录的日志数据</param>
        /// <remarks>
        /// <code source="..\Framework\src\DeluxeWorks.Library\Logging\Logger.cs" 
        /// lang="cs" region="Process Log" title="写日志"></code>
        /// </remarks>
        public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
        {
            if (data is LogEntity)
            {
                LogEntity logData = data as LogEntity;
                if (this.Formatter != null)
                {
                    base.Write(this.Formatter.Format(logData));
                }
                else
                {
                    base.TraceData(eventCache, source, eventType, id, logData);
                }

            }
            else
            {
                base.TraceData(eventCache, source, eventType, id, data);
            }
        }
예제 #8
0
        /// <summary>
        /// 文本格式化
        /// </summary>
        /// <param name="templateBuilder">包含格式化模板串的StringBuilder</param>
        /// <param name="log">待格式化的LogEntity对象</param>
        /// <returns>格式化成的文本串</returns>
        private string Format(StringBuilder templateBuilder, LogEntity log)
        {
            templateBuilder.Replace(TextLogFormatter.TimeStampToken, log.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"));
            templateBuilder.Replace(TextLogFormatter.TitleToken, log.Title);
            templateBuilder.Replace(TextLogFormatter.MessageToken, log.Message);
            templateBuilder.Replace(TextLogFormatter.EventIdToken, log.EventID.ToString(Resource.Culture));
            templateBuilder.Replace(TextLogFormatter.EventTypeToken, log.LogEventType.ToString());
            templateBuilder.Replace(TextLogFormatter.StackTraceToken, log.StackTrace);
            templateBuilder.Replace(TextLogFormatter.PriorityToken, log.Priority.ToString());
            templateBuilder.Replace(TextLogFormatter.MachineToken, log.MachineName);

            templateBuilder.Replace(TextLogFormatter.ActivityidToken, log.ActivityID.ToString("D", Resource.Culture));

            FormatTokenFunctions(templateBuilder, log);

            templateBuilder.Replace(TextLogFormatter.NewLineToken, Environment.NewLine);
            templateBuilder.Replace(TextLogFormatter.TabToken, "\t");

            return(templateBuilder.ToString());
        }
예제 #9
0
        /// <summary>
        /// Searches for token functions in the message and replace all with formatted values.
        /// </summary>
        /// <param name="messageBuilder">Message template containing tokens.</param>
        /// <param name="log">Log entry containing properties to format.</param>
        public virtual void Format(StringBuilder messageBuilder, LogEntity log)
        {
            int pos = 0;

            while (pos < messageBuilder.Length)
            {
                string messageString = messageBuilder.ToString();
                if (messageString.IndexOf(this.startDelimiter) == -1)
                {
                    break;
                }

                string tokenTemplate  = GetInnerTemplate(pos, messageString);
                string tokenToReplace = this.startDelimiter + tokenTemplate + this.endDelimiter;
                pos = messageBuilder.ToString().IndexOf(tokenToReplace);

                string tokenValue = FormatToken(tokenTemplate, log);

                messageBuilder.Replace(tokenToReplace, tokenValue);
            }
        }
예제 #10
0
        /// <summary>
        /// Formats the timestamp property with the specified date time format string.
        /// </summary>
        /// <param name="tokenTemplate">Date time format string.</param>
        /// <param name="log">Log entry containing the timestamp.</param>
        /// <returns>Returns the formatted time stamp.</returns>
        public override string FormatToken(string tokenTemplate, LogEntity log)
        {
            string result = null;

            if (tokenTemplate.Equals(TimeStampToken.LocalStartDelimiter, System.StringComparison.InvariantCultureIgnoreCase))
            {
                System.DateTime localTime = log.TimeStamp.ToLocalTime();
                result = localTime.ToString();
            }
            else if (tokenTemplate.StartsWith(TimeStampToken.LocalStartDelimiterWithFormat, System.StringComparison.InvariantCultureIgnoreCase))
            {
                string          formatTemplate = tokenTemplate.Substring(TimeStampToken.LocalStartDelimiterWithFormat.Length);
                System.DateTime localTime      = log.TimeStamp.ToLocalTime();
                result = localTime.ToString(formatTemplate, CultureInfo.CurrentCulture);
            }
            else
            {
                result = log.TimeStamp.ToString(tokenTemplate, CultureInfo.CurrentCulture);
            }
            return(result);
        }
        /// <summary>
        /// 重载方法,写入文件
        /// </summary>
        /// <param name="eventCache">包含当前进程 ID、线程 ID 以及堆栈跟踪信息的 TraceEventCache 对象</param>
        /// <param name="source">标识输出时使用的名称,通常为生成跟踪事件的应用程序的名称</param>
        /// <param name="logEventType">TraceEventType枚举值,指定引发日志记录的事件类型</param>
        /// <param name="eventID">事件的数值标识符</param>
        /// <param name="data">要记录的日志数据</param>
        /// <remarks>
        /// <code source="..\Framework\src\DeluxeWorks.Library\Logging\Logger.cs"
        /// lang="cs" region="Process Log" title="写日志"></code>
        /// </remarks>
        public override void TraceData(TraceEventCache eventCache, string source, TraceEventType logEventType, int eventID, object data)
        {
            if (data is LogEntity)
            {
                LogEntity logData = data as LogEntity;

                //取LogEntity对象的Source属性,如果为空则取来源于配置的缺省值
                string sourceName = string.IsNullOrEmpty(logData.Source) ? this.source : logData.Source;

                if (this.WriteTraceData(eventCache, this.logName, sourceName, logEventType, eventID, data) == false)
                {
                    string registerLogName = this.RegisterSourceToLogName(sourceName, this.logName);

                    this.WriteTraceData(eventCache, registerLogName, sourceName, logEventType, eventID, data);
                }
            }
            else
            {
                base.TraceData(eventCache, source, logEventType, eventID, data);
            }
        }
예제 #12
0
파일: Logger.cs 프로젝트: wooln/AK47Source
        private void ProcessLog(LogEntity log)
        {
            //if (!ShouldTrace(log.LogEventType))
            //    return;

            TraceEventCache cache = new TraceEventCache();

            //bool isTransfer = logEntry.Severity == TraceEventType.Transfer && logEntry.RelatedActivityId != null;

            foreach (TraceListener listener in this.Listeners)
            {
                try
                {
                    listener.TraceData(cache, log.Source, log.LogEventType, log.EventID, log);

                    listener.Flush();
                }
                catch (Exception ex)
                {
                    if (listener is FormattedEventLogTraceListener)
                    {
                        try
                        {
                            string msg = string.Format("{1}[{0:yyyy-MM-dd HH:mm:ss}] \n 错误堆栈为:{2}", DateTime.Now, ex.Message, ex.StackTrace);

                            EventLog.WriteEntry("Application", "写事件查看器异常:" + msg, EventLogEntryType.Warning);
                        }
                        catch (Exception)
                        {
                        }
                    }
                    else
                    {
                        throw;
                    }
                }
            }
        }
예제 #13
0
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="message">日志消息</param>
        /// <param name="priority">日志优先级</param>
        /// <param name="eventId">日志事件</param>
        /// <param name="logEventType">日志事件类型</param>
        /// <param name="title">日志标题</param>
        public void Write(string message, LogPriority priority, int eventId,
                                TraceEventType logEventType, string title)
        {
            try
            {
                UpdateLastMsg(message);

                LogEntity log = new LogEntity(title, message, eventId, priority, logEventType, this.name, string.Empty, null);
                
                this.logger.Write(log);
            }
            catch (LogException ex)
            {
                this.WriteDebugString(ex, EventLogEntryType.Warning, ServiceLogEventID.SERVICEBASE_WRITELOG);
            }
        }
예제 #14
0
 /// <summary>
 /// 抽象方法,格式化LogEntity对象成一个字符串
 /// </summary>
 /// <param name="log">待格式化的LogEntity对象</param>
 /// <returns>格式化成的字符串</returns>
 /// <remarks>
 /// 由派生类具体实现
 /// <code source="..\Framework\src\DeluxeWorks.Library\Logging\Formatters\TextFormatter.cs" 
 /// lang="cs" region="Format Implementation" title="文本格式化方法"></code>
 /// </remarks>
 public abstract string Format(LogEntity log);
예제 #15
0
 /// <summary>
 /// 文本格式化方法
 /// </summary>
 /// <param name="log">待格式化的LogEntity对象</param>
 /// <returns>格式化成的文本串</returns>
 /// <remarks>
 /// 重载方法,实现文本格式化
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\FormatterTest.cs"
 /// lang="cs" region="Format Test" tittle="获取Formatter对象"></code>
 /// </remarks>
 public override string Format(LogEntity log)
 {
     return(Format(CreateTemplateBuilder(), log));
 }
예제 #16
0
        /// <summary>
        /// 文本格式化
        /// </summary>
        /// <param name="templateBuilder">包含格式化模板串的StringBuilder</param>
        /// <param name="log">待格式化的LogEntity对象</param>
        /// <returns>格式化成的文本串</returns>
        private string Format(StringBuilder templateBuilder, LogEntity log)
        {
            templateBuilder.Replace(TextLogFormatter.TimeStampToken, log.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss"));
			templateBuilder.Replace(TextLogFormatter.TitleToken, log.Title);
			templateBuilder.Replace(TextLogFormatter.MessageToken, log.Message);
			templateBuilder.Replace(TextLogFormatter.EventIdToken, log.EventID.ToString(Resource.Culture));
			templateBuilder.Replace(TextLogFormatter.EventTypeToken, log.LogEventType.ToString());
            templateBuilder.Replace(TextLogFormatter.StackTraceToken, log.StackTrace);
			templateBuilder.Replace(TextLogFormatter.PriorityToken, log.Priority.ToString());
			templateBuilder.Replace(TextLogFormatter.MachineToken, log.MachineName);

			templateBuilder.Replace(TextLogFormatter.ActivityidToken, log.ActivityID.ToString("D", Resource.Culture));

            FormatTokenFunctions(templateBuilder, log);

			templateBuilder.Replace(TextLogFormatter.NewLineToken, Environment.NewLine);
			templateBuilder.Replace(TextLogFormatter.TabToken, "\t");

            return templateBuilder.ToString();
        }
예제 #17
0
        private static void WriteExceptionToLog(System.Exception ex)
        {
            Logger logger = LoggerFactory.Create("webApplicationError");
            LogEntity logEntity = new LogEntity(ex);
            HttpContext context = HttpContext.Current;

            logEntity.LogEventType = ApplicationErrorLogSection.GetSection().GetExceptionLogEventType(ex);

            string[] paths = context.Request.ApplicationPath.Split('/');
            logEntity.StackTrace = ex.StackTrace;
            logEntity.Source = paths[paths.Length - 1];
            logEntity.Title = string.Format("{0}应用页面错误", context.Request.ApplicationPath);
            logEntity.ExtendedProperties.Add("RequestUrl", context.Request.Url.AbsoluteUri);

            ExceptionHelper.DoSilentAction(() =>
            {
                if (DeluxeIdentity.CurrentUser != null)
                {
                    logEntity.ExtendedProperties.Add("UserLogOnName", DeluxeIdentity.CurrentUser.LogOnName);
                    logEntity.ExtendedProperties.Add("UserFullPath", DeluxeIdentity.CurrentUser.FullPath);
                    logEntity.ExtendedProperties.Add("UserDisplayName", DeluxeIdentity.CurrentUser.DisplayName);
                }
            });

            logger.Write(logEntity);
        }
예제 #18
0
 /// <summary>
 /// Abstract method to process the token value between the start and end delimiter.
 /// </summary>
 /// <param name="tokenTemplate">Token value between the start and end delimiters.</param>
 /// <param name="log">Log entry to process.</param>
 /// <returns>Formatted value to replace the token.</returns>
 public abstract string FormatToken(string tokenTemplate, LogEntity log);
예제 #19
0
		private static void WriteExceptionToLog(System.Exception ex)
		{
			Logger logger = LoggerFactory.Create("webApplicationError");
			LogEntity logEntity = new LogEntity(ex);
			HttpContext context = HttpContext.Current;

			logEntity.LogEventType = ApplicationErrorLogSection.GetSection().GetExceptionLogEventType(ex);

			string[] paths = context.Request.ApplicationPath.Split('/');
			logEntity.StackTrace = ex.StackTrace;
			logEntity.Source = paths[paths.Length - 1];
			logEntity.Title = string.Format("{0}应用页面错误", context.Request.ApplicationPath);
			logEntity.ExtendedProperties.Add("RequestUrl", context.Request.Url.AbsoluteUri);
			try
			{
				if (HttpContext.Current.User != null && HttpContext.Current.User.Identity != null && HttpContext.Current.User.Identity.IsAuthenticated)
				{
					logEntity.ExtendedProperties.Add("UserLogOnName", HttpContext.Current.User.Identity.Name);
				}
			}
			catch
			{
			}
			logger.Write(logEntity);
		}
예제 #20
0
 /// <summary>
 /// 抽象方法,格式化LogEntity对象成一个字符串
 /// </summary>
 /// <param name="log">待格式化的LogEntity对象</param>
 /// <returns>格式化成的字符串</returns>
 /// <remarks>
 /// 由派生类具体实现
 /// <code source="..\Framework\src\DeluxeWorks.Library\Logging\Formatters\TextFormatter.cs"
 /// lang="cs" region="Format Implementation" title="文本格式化方法"></code>
 /// </remarks>
 public abstract string Format(LogEntity log);
예제 #21
0
        private void ProcessLog(LogEntity log)
        {
            //if (!ShouldTrace(log.LogEventType)) 
            //    return;

            TraceEventCache cache = new TraceEventCache();

            //bool isTransfer = logEntry.Severity == TraceEventType.Transfer && logEntry.RelatedActivityId != null;

            foreach (TraceListener listener in this.Listeners)
            {
                try
                {
                    listener.TraceData(cache, log.Source, log.LogEventType, log.EventID, log);

                    listener.Flush();
                }
                catch (Exception ex)
                {
                    if (listener is FormattedEventLogTraceListener)
                    {
                        try
                        {
                            string msg = string.Format("{1}[{0:yyyy-MM-dd HH:mm:ss}] \n 错误堆栈为:{2}", DateTime.Now, ex.Message, ex.StackTrace);

                            EventLog.WriteEntry("Application", "写事件查看器异常:" + msg, EventLogEntryType.Warning);
                        }
                        catch (Exception)
                        {
                        }
                    }
                    else
                        throw;
                }
            }
        }
예제 #22
0
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="message">日志消息</param>
        /// <param name="priority">日志优先级</param>
        /// <param name="eventId">日志事件ID</param>
        /// <param name="logEventType">日志事件类型</param>
        /// <param name="title">日志标题</param>
        /// <remarks>
        /// 根据传递的参数,构建LogEntity对象,并写入媒介
        /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\LoggerTest.cs"
        /// lang="cs" region="Logger Write Test" tittle="写日志信息"></code>
        /// </remarks>
        public void Write(string message, LogPriority priority, int eventId,
                                TraceEventType logEventType, string title)
        {
            LogEntity log = new LogEntity(message);

            log.Priority = priority;
            log.EventID = eventId;
            log.LogEventType = logEventType;
            log.Title = title;

            Write(log);
        }
예제 #23
0
 /// <summary>
 /// 写日志
 /// </summary>
 /// <param name="log">待写的日志记录</param>
 /// <remarks>
 /// 写日志信息的方法
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\LoggerTest.cs"
 /// lang="cs" region="Logger Write Test" tittle="写日志信息"></code>
 /// </remarks>
 public void Write(LogEntity log)
 {
     lock (syncObject)
     {
         try
         {
             if (this.enableLog && this.FilterPipeline.IsMatch(log))
             {
                 ProcessLog(log);
             }
         }
         catch (LogException)
         {
             throw;
         }
         catch (Exception ex)
         {
             if (ex is LogException)
                 throw;
             else
                 throw new LogException("写日志信息时出错:" + ex.Message, ex);
         }
     }
 }
예제 #24
0
        public void Write(string title, Exception ex, TraceEventType eventType, int eventId)
        {
            LogEntity log = new LogEntity(ex);
            log.EventID = eventId;
            log.Title = title;
            log.LogEventType = eventType;
            log.ExtendedProperties.Add("exceptionType", ex.GetType());

            UpdateLastExceptionMessage(ex);

            this.Write(log);
        }
예제 #25
0
 /// <summary>
 /// 抽象方法,实现日志过滤
 /// </summary>
 /// <param name="log">日志对象</param>
 /// <returns>布尔值,true:通过,false:不通过</returns>
 public abstract bool IsMatch(LogEntity log);
예제 #26
0
        /// <summary>
        /// 写信息
        /// </summary>
        /// <param name="message">日志信息</param>
        public void Write(string message)
        {
            LogEntity log = new LogEntity(message);

            UpdateLastMsg(message);

            this.Write(log);
        }
		public static bool TryWriteAppLog(this Exception ex, string detail)
		{
			bool result = false;

			if (ex != null)
			{
				LogEntity logEntity = new LogEntity(ex);

				logEntity.LogEventType = ApplicationErrorLogSection.GetSection().GetExceptionLogEventType(ex);

				logEntity.EventID = ApplicationErrorEventID;
				logEntity.StackTrace = detail;

				HttpContext context = HttpContext.Current;

				try
				{
					if (context != null)
					{
						string[] paths = context.Request.ApplicationPath.Split('/');

						logEntity.Source = paths[paths.Length - 1];

						logEntity.Title = string.Format("{0}应用页面错误", context.Request.ApplicationPath);
						logEntity.ExtendedProperties.Add("RequestUrl", context.Request.Url.AbsoluteUri);
						logEntity.ExtendedProperties.Add("UserHostAddress", context.Request.UserHostAddress);

						if (HttpContext.Current.User != null)
							logEntity.ExtendedProperties.Add("UserLogOnName", HttpContext.Current.User.Identity.Name);
					}
				}
				catch
				{
				}

				result = TryWriteAppLog(logEntity);
			}

			return result;
		}
예제 #28
0
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="message">日志消息</param>
        /// <param name="eventId">日志事件</param>
        /// <param name="title">日志标题</param>
        public void Write(string title, string message, int eventId)
        {
            LogEntity log = new LogEntity(title, message, eventId);

            UpdateLastMsg(message);

            this.Write(log);
        }
예제 #29
0
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="log">待写的日志记录对象</param>
        public void Write(LogEntity log)
        {
            ExceptionHelper.FalseThrow(log != null, "LogEntity对象为空");

            try
            {
                UpdateLastMsg(log.Message);

                if (string.IsNullOrEmpty(log.Source))
                    log.Source = this.name;
                
                this.logger.Write(log);
            }
            catch (Exception ex)
            {
                this.WriteDebugString(ex, EventLogEntryType.Warning, ServiceLogEventID.SERVICEBASE_WRITELOG);
            }
        }
예제 #30
0
		/// <summary>
		/// 写错误日志
		/// </summary>
		/// <param name="ex"></param>
		/// <param name="control"></param>
		private static void TryWriteLog(Exception ex, Control control)
		{
			try
			{
				Logger logger = LoggerFactory.Create("webControlInvokeError");
				LogEntity logEntity = new LogEntity(ex);
				HttpContext context = HttpContext.Current;
				logEntity.Source = control.GetType().Name;
				logEntity.Title = string.Format("{0}控件回调错误", control.GetType().Name);
				logEntity.ExtendedProperties.Add("RequestUrl", context.Request.Url.AbsoluteUri);

				if (HttpContext.Current.User != null)
					logEntity.ExtendedProperties.Add("UserLogOnName", HttpContext.Current.User.Identity.Name);

				logger.Write(logEntity);
			}
			catch
			{
			}
		}
예제 #31
0
 /// <summary>
 /// 抽象方法,实现日志过滤
 /// </summary>
 /// <param name="log">日志对象</param>
 /// <returns>布尔值,true:通过,false:不通过</returns>
 public abstract bool IsMatch(LogEntity log);
예제 #32
0
 /// <summary>
 /// 覆写的方法,具体实现优先级过滤
 /// </summary>
 /// <param name="log">日志记录</param>
 /// <returns>布尔值,true:通过,false:不通过</returns>
 /// <remarks>
 /// 只有优先级大于等于minPriority的日志记录才能通过
 /// </remarks>
 public override bool IsMatch(LogEntity log)
 {
     return(log.Priority >= this.minPriority);
 }
예제 #33
0
 /// <summary>
 /// 文本格式化方法
 /// </summary>
 /// <param name="log">待格式化的LogEntity对象</param>
 /// <returns>格式化成的文本串</returns>
 /// <remarks>
 /// 重载方法,实现文本格式化
 /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\FormatterTest.cs"
 /// lang="cs" region="Format Test" tittle="获取Formatter对象"></code>
 /// </remarks>
 public override string Format(LogEntity log)
 {
     return Format(CreateTemplateBuilder(), log);
 }
예제 #34
0
        /// <summary>
        /// 实现ICloneable接口
        /// </summary>
        /// <returns>
        /// 克隆出的LogEntity对象
        /// <code source="..\Framework\TestProjects\DeluxeWorks.Library.Test\\Logging\LogEntityTest.cs"
        /// lang="cs" region="LogEntityClone Test" tittle="克隆LogEntity对象"></code>
        /// </returns>
        public object Clone()
        {
            LogEntity log = new LogEntity(this.Message);

            log.EventID = this.EventID;
            log.Title = this.Title;
            log.Priority = this.Priority;
            log.LogEventType = this.LogEventType;
            log.MachineName = this.MachineName;
            log.StackTrace = this.StackTrace;
            log.ActivityID = this.ActivityID;
            log.Source = this.Source;

            if (this.extendedProperties != null)
                log.extendedProperties = new Dictionary<string, object>(this.extendedProperties);

            return log;
        }
예제 #35
0
        private void FormatTokenFunctions(StringBuilder templateBuilder, LogEntity log)
        {
			foreach (TokenFunction token in this.tokenFunctions)
            {
                token.Format(templateBuilder, log);
            }
        }
예제 #36
0
 /// <summary>
 /// 覆写的方法,具体实现优先级过滤
 /// </summary>
 /// <param name="log">日志记录</param>
 /// <returns>布尔值,true:通过,false:不通过</returns>
 /// <remarks>
 /// 只有优先级大于等于minPriority的日志记录才能通过
 /// </remarks>
 public override bool IsMatch(LogEntity log)
 {
     return log.Priority >= this.minPriority;
 }
		/// <summary>
		/// 创建Log项
		/// </summary>
		/// <param name="notifyData"></param>
		/// <returns></returns>
		protected virtual LogEntity CreateLogEntity(CacheNotifyData notifyData)
		{
			LogEntity logEntity = new LogEntity(notifyData.ToString());

			logEntity.EventID = 7002;
			logEntity.LogEventType = TraceEventType.Information;

			logEntity.Source = GetLogSource();
			logEntity.Title = "接收Cache";
			logEntity.Priority = LogPriority.Normal;

			return logEntity;
		}
예제 #38
0
        private static LogEntity CreateLogEntity(CacheNotifyData notifyData, UdpCacheNotifierTarget endPoint)
        {
            string message = string.Format("{0}, {1}",
                    notifyData.ToString(),
                    endPoint.ToString()
                );

            LogEntity logEntity = new LogEntity(message);

            logEntity.EventID = 7001;
            logEntity.LogEventType = TraceEventType.Information;
            logEntity.Source = "UdpCache";
            logEntity.Title = "发送UdpCache";
            logEntity.Priority = LogPriority.Normal;

            return logEntity;
        }