コード例 #1
0
        protected virtual bool FilterEvent(LoggingEvent loggingEvent)
        {
            if (!this.IsAsSevereAsThreshold(loggingEvent.Level))
            {
                return(false);
            }
            IFilter filterHead = this.FilterHead;

            while (filterHead != null)
            {
                FilterDecision decision = filterHead.Decide(loggingEvent);
                if (decision == FilterDecision.Deny)
                {
                    return(false);
                }
                if (decision == FilterDecision.Accept)
                {
                    filterHead = null;
                    continue;
                }
                if (decision == FilterDecision.Neutral)
                {
                    filterHead = filterHead.Next;
                }
            }
            return(true);
        }
コード例 #2
0
        public override FilterDecision Decide(LoggingEvent loggingEvent)
        {
            bool           transactionExists   = null != Transaction.Current;
            FilterDecision transactionDecision = AcceptOnMatch ? FilterDecision.Accept : FilterDecision.Deny;

            return(transactionExists ? transactionDecision : FilterDecision.Neutral);
        }
コード例 #3
0
        public override FilterDecision Decide(LoggingEvent loggingEvent)
        {
            if (PercentageCutoff <= 0 || PercentageCutoff > 100)
            {
                PercentageCutoff = 85;
            }

            FilterDecision decision = FilterDecision.Accept;

            String newMessage = null;

            if (loggingEvent.MessageObject != null)
            {
                newMessage = loggingEvent.MessageObject.ToString();
            }

            if (!String.IsNullOrWhiteSpace(lastMessage) && !String.IsNullOrWhiteSpace(newMessage))
            {
                if (newMessage == lastMessage)
                {
                    decision = FilterDecision.Deny;
                }

                if (FilterPercentages)
                {
                    Int32 lastMessagePercentageIndex = lastMessage.LastIndexOf('%');
                    if (lastMessagePercentageIndex > 0)
                    {
                        Int32 newMessagePercentageIndex = newMessage.LastIndexOf('%');
                        if (newMessagePercentageIndex > 0)
                        {
                            Int32 newMessageSpaceIndex = newMessage.LastIndexOf(' ', newMessagePercentageIndex);
                            if (newMessageSpaceIndex < 0)
                            {
                                newMessageSpaceIndex = 0;
                            }
                            Decimal percentage;
                            if (Decimal.TryParse(newMessage.Substring(newMessageSpaceIndex, newMessagePercentageIndex - (newMessageSpaceIndex + 1)), out percentage))
                            {
                                if (percentage < PercentageCutoff)
                                {
                                    decision = FilterDecision.Deny;
                                }
                            }
                        }
                    }
                }
            }

            lastMessage = newMessage;
            return(decision);
        }
コード例 #4
0
ファイル: ExceptionTypeFilter.cs プロジェクト: CarlosVV/sic
        /// <summary>
        /// Decides a logging event
        /// </summary>
        /// <param name="loggingEvent">LoggingEvent instance</param>
        /// <returns>Returns a filter decision</returns>
        public override FilterDecision Decide(LoggingEvent loggingEvent)
        {
            FilterDecision decision = FilterDecision.Deny;

            string exceptionString = loggingEvent.GetExceptionString();

            if (exceptionString.Contains("BusinessException") || exceptionString.Contains("CheckInException"))
            {
                decision = FilterDecision.Accept;
            }

            return(decision);
        }
コード例 #5
0
        public override FilterDecision Decide(LoggingEvent loggingEvent)
        {
            FilterDecision propertyFilterResult = CheckProperty(loggingEvent);
            FilterDecision levelFilterResult    = CheckLevel(loggingEvent);

            if (propertyFilterResult == FilterDecision.Deny || levelFilterResult == FilterDecision.Deny)
            {
                return(FilterDecision.Deny);
            }

            if (propertyFilterResult == FilterDecision.Neutral && levelFilterResult == FilterDecision.Neutral)
            {
                return(FilterDecision.Neutral);
            }

            return(FilterDecision.Accept);
        }
コード例 #6
0
 private FilterDecision NegateDecision(FilterDecision decision) => decision switch
 {
コード例 #7
0
 /// <summary>
 /// Gets whether the <see cref="FilterDecision"/> is <see cref="FilterDecision.Keep"/>.
 /// </summary>
 public static bool IsKeep(this FilterDecision decision) => decision == FilterDecision.Keep;
コード例 #8
0
 /// <summary>
 /// Gets whether the <see cref="FilterDecision"/> is <see cref="FilterDecision.Exclude"/>.
 /// </summary>
 public static bool IsExclude(this FilterDecision decision) => decision == FilterDecision.Exclude;