Пример #1
0
        public IContextStack this[string key]
        {
            get
            {
                log4net.Util.ThreadContextStack log4netStack = ThreadContext.Stacks[key];

                // log4net never allows a null stack.
                return(new ThreadContextStack(log4netStack));
            }
        }
Пример #2
0
        public static void SetMaxDepth(int maxDepth)
        {
            if (maxDepth >= 0)
            {
                log4net.Util.ThreadContextStack stack = ThreadContext.Stacks["NDC"];

                if (maxDepth == 0)
                {
                    stack.Clear();
                }
                else
                {
                    while (stack.Count > maxDepth)
                    {
                        stack.Pop();
                    }
                }
            }
        }
        /// <summary>
        /// Returns whether to include stack array or not
        /// Also outs the stack array if needed to include
        /// </summary>
        /// <param name="stack"></param>
        /// <param name="includeStackKey"></param>
        /// <returns></returns>
        private bool IncludeThreadStackValues(log4net.Util.ThreadContextStack stack,
                                              out string[] stackArray)
        {
            if (stack != null && stack.Count > 0)
            {
                stackArray = new string[stack.Count];
                for (int n = stack.Count - 1; n >= 0; n--)
                {
                    stackArray[n] = stack.Pop();
                }

                foreach (string stackValue in stackArray)
                {
                    stack.Push(stackValue);
                }
                return(true);
            }
            else
            {
                stackArray = null;
                return(false);
            }
        }
        override protected void Convert(TextWriter writer, LoggingEvent loggingEvent)
        {
            string messageId = null;

            // pop the NDC
            log4net.Util.ThreadContextStack ndc = loggingEvent.LookupProperty("NDC") as log4net.Util.ThreadContextStack;
            if (ndc != null && ndc.Count > 0)
            {
                // the NDC represents a context stack, whose levels are separated by whitespace. we will use this as our MessageId.
                messageId = ndc.ToString();
            }

            if (string.IsNullOrEmpty(messageId))
            {
                messageId = "-"; // the NILVALUE
            }
            else
            {
                messageId = messageId.Replace(' ', '.'); // replace spaces with periods
            }

            writer.Write(PrintableAsciiSanitizer.Sanitize(messageId, 32));
        }
 public ThreadContextStack(log4net.Util.ThreadContextStack log4netStack)
 {
 }
 public ThreadContextStack(log4net.Util.ThreadContextStack log4netStack)
 {
     this.log4netStack = log4netStack;
 }
 public ThreadContextStack(log4net.Util.ThreadContextStack log4netStack)
 {
     this.log4netStack = log4netStack;
 }