Example #1
0
 protected override void Append(LoggingEvent loggingEvent)
 {
     if (Sitecore.Configuration.Settings.GetBoolSetting("IFTTT.Logging.Enabled", false))
     {
         LoggerRuleContext ruleContext = new LoggerRuleContext();
         ruleContext.LogLevel = loggingEvent.Level.Name;
         ruleContext.LogText  = loggingEvent.MessageObject.ToString();
         RunRules(ruleContext);
     }
     base.Append(loggingEvent);
 }
Example #2
0
        ///<summary>
        /// runs the set of rules and checks for any matches, if it finds a match it will run the rule's associated action
        /// </summary>
        /// <param name="ruleContext">Rule context that holds log parameters</param>
        /// <returns></returns>
        public static void RunRules(LoggerRuleContext ruleContext)
        {
            using (new SecurityDisabler())
            {
                Item rootRulesFolder = webDb.GetItem(Constants.IDs.RulesRootFolderId);
                if (rootRulesFolder == null)
                {
                    return;
                }
                var rulesItems = rootRulesFolder.Children.Where(i => i.TemplateID.Equals(Constants.Templates.LoggingRule));
                if (!rulesItems.Any())
                {
                    return;
                }
                foreach (var ruleItem in rulesItems)
                {
                    foreach (Rule <LoggerRuleContext> rule in RuleFactory.GetRules <LoggerRuleContext>(new[] { ruleItem }, Constants.Fields.Rule).Rules)
                    {
                        ruleContext.ItemId = ruleItem.ID;
                        if (rule.Condition != null)
                        {
                            var stack = new RuleStack();
                            rule.Condition.Evaluate(ruleContext, stack);

                            if (ruleContext.IsAborted)
                            {
                                continue;
                            }
                            if ((stack.Count != 0) && ((bool)stack.Pop()))
                            {
                                rule.Execute(ruleContext);
                            }
                        }
                        else
                        {
                            rule.Execute(ruleContext);
                        }
                    }
                }
            }
        }