Ejemplo n.º 1
0
        /// <summary>
        /// Renders the <see cref="T:log4net.Core.LoggingEvent" /> to a string.
        /// </summary>
        /// <param name="loggingEvent">The event to render.</param>
        /// <param name="writer">The TextWriter to write the formatted event to</param>
        /// <remarks>
        /// <para>
        /// Helper method to render a <see cref="T:log4net.Core.LoggingEvent" /> to
        /// a string. This appender must have a <see cref="P:log4net.Appender.AppenderSkeleton.Layout" />
        /// set to render the <paramref name="loggingEvent" /> to
        /// a string.
        /// </para>
        /// <para>If there is exception data in the logging event and
        /// the layout does not process the exception, this method
        /// will append the exception text to the rendered string.
        /// </para>
        /// <para>
        /// Use this method in preference to <see cref="M:RenderLoggingEvent(LoggingEvent)" />
        /// where possible. If, however, the caller needs to render the event
        /// to a string then <see cref="M:RenderLoggingEvent(LoggingEvent)" /> does
        /// provide an efficient mechanism for doing so.
        /// </para>
        /// </remarks>
        protected void RenderLoggingEvent(TextWriter writer, LoggingEvent loggingEvent)
        {
            if (m_layout == null)
            {
                throw new InvalidOperationException("A layout must be set");
            }
            if (m_layout.IgnoresException)
            {
                string exceptionString = loggingEvent.GetExceptionString();
                if (exceptionString != null && exceptionString.Length > 0)
                {
                    m_layout.Format(writer, loggingEvent);

                    // 布局中设置了exception才有必要输出
                    if (m_layout is PatternLayout layout && layout.ConversionPattern.Contains("%exception"))
                    {
                        writer.WriteLine(exceptionString);
                    }
                }
                else
                {
                    m_layout.Format(writer, loggingEvent);
                }
            }
            else
            {
                m_layout.Format(writer, loggingEvent);
            }
        }
        /// <summary>
        /// Format the logging event as an object.
        /// </summary>
        /// <param name="loggingEvent">The event to format</param>
        /// <returns>returns the formatted event</returns>
        /// <remarks>
        /// <para>
        /// Format the logging event as an object.
        /// </para>
        /// <para>
        /// Uses the <see cref="ILayout"/> object supplied to
        /// the constructor to perform the formatting.
        /// </para>
        /// </remarks>
        public virtual object Format(LoggingEvent loggingEvent)
        {
            var writer = new StringWriter(CultureInfo.InvariantCulture);

            m_layout.Format(writer, loggingEvent);
            return(writer.ToString());
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Implement this method to create your own layout format.
 /// </summary>
 /// <param name="writer">The TextWriter to write the formatted event to</param>
 /// <param name="loggingEvent">The event to format</param>
 /// <remarks>
 /// <para>
 /// This method is called by an appender to format
 /// the <paramref name="loggingEvent"/> as text.
 /// </para>
 /// </remarks>
 virtual public void Format(TextWriter writer, LoggingEvent loggingEvent)
 {
     if (m_nestedLayout != null)
     {
         m_nestedLayout.Format(writer, loggingEvent);
     }
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Format the logging event as an object.
        /// </summary>
        /// <param name="loggingEvent">The event to format</param>
        /// <returns>returns the formatted event</returns>
        /// <remarks>
        /// <para>
        /// Format the logging event as an object.
        /// </para>
        /// <para>
        /// Uses the <see cref="ILayout"/> object supplied to
        /// the constructor to perform the formatting.
        /// </para>
        /// </remarks>
        virtual public object Format(LoggingEvent loggingEvent)
        {
            StringWriter writer = new StringWriter(System.Globalization.CultureInfo.InvariantCulture);

            m_layout.Format(writer, loggingEvent);
            return(writer.ToString());
        }
Ejemplo n.º 5
0
 public static string FormatString(this ILayout layout, LoggingEvent loggingEvent)
 {
     using (var writer = new StringWriter())
     {
         layout.Format(writer, loggingEvent);
         return(writer.ToString());
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Renders the <see cref="LoggingData"/> to a string.
 /// </summary>
 /// <param name="loggingEvent">The event to render.</param>
 /// <param name="writer">The TextWriter to write the formatted event to</param>
 /// <remarks>
 /// <para>
 /// Helper method to render a <see cref="LoggingData"/> to
 /// a string. This appender must have a <see cref="Layout"/>
 /// set to render the <paramref name="loggingEvent"/> to
 /// a string.
 /// </para>
 /// <para>If there is exception data in the logging event and
 /// the layout does not process the exception, this method
 /// will append the exception text to the rendered string.
 /// </para>
 /// <para>
 /// Use this method in preference to <see cref="M:RenderLoggingEvent(LoggingEvent)"/>
 /// where possible. If, however, the caller needs to render the event
 /// to a string then <see cref="M:RenderLoggingEvent(LoggingEvent)"/> does
 /// provide an efficient mechanism for doing so.
 /// </para>
 /// </remarks>
 protected void RenderLoggingEvent(TextWriter writer, LoggingData loggingEvent)
 {
     if (m_layout == null)
     {
         throw new InvalidOperationException("A layout must be set");
     }
     // The layout will render the exception
     m_layout.Format(writer, loggingEvent);
 }
Ejemplo n.º 7
0
        public string ToString(bool excludeLastExceptionStackTrace)
        {
            using (var writer = new StringWriter())
            {
                _layout.Format(writer, _event);

                var line      = writer.ToString();
                var exception = _event.GetExceptionString();

                var exclude = (IsLast && excludeLastExceptionStackTrace);
                return(string.IsNullOrEmpty(exception) || exclude ? line : string.Format("{0}\n{1}", line, exception));
            }
        }
Ejemplo n.º 8
0
        public static string MakeBodyXml(ILayout layout, IEnumerable <LoggingEvent> buffer)
        {
            TextWriter writer = new StringWriter();

            writer.Write(layout.Header);
            foreach (var loggingEvent in buffer)
            {
                layout.Format(writer, loggingEvent);
            }
            writer.Write(layout.Footer);
            writer.Flush();
            return(writer.ToString());
        }
        private JObject SendEvent(ILayout layout, LoggingEvent ev)
        {
            var builder = new StringBuilder();

            using (var writer = new StringWriter(builder))
            {
                layout.Format(writer, ev);
            }
            JsonReader reader = new JsonTextReader(new StringReader(builder.ToString()));

            reader.DateParseHandling = DateParseHandling.None;
            return(JObject.Load(reader));
        }
        public static string GetFormattedString(this LoggingEvent loggingEvent, ILayout layout)
        {
            if (layout == null)
            {
                return($"{loggingEvent.RenderedMessage} {loggingEvent.GetExceptionString()}{Environment.NewLine}");
            }

            using var stringWriter = new StringWriter();
            layout.Format(stringWriter, loggingEvent);
            var message = stringWriter.ToString();

            return(message);
        }
Ejemplo n.º 11
0
        internal static string GetXmlString(this LoggingEvent loggingEvent, ILayout layout = null)
        {
            string message = loggingEvent.RenderedMessage + Environment.NewLine + loggingEvent.GetExceptionString();

            if (layout != null)
            {
                using (var w = new StringWriter())
                {
                    layout.Format(w, loggingEvent);
                    message = w.ToString();
                }
            }

            var logXml = new XElement(
                "LogEntry",
                new XElement("UserName", loggingEvent.UserName),
                new XElement("TimeStamp",
                             loggingEvent.TimeStamp.ToString(CultureInfo.InvariantCulture)),
                new XElement("ThreadName", loggingEvent.ThreadName),
                new XElement("LoggerName", loggingEvent.LoggerName),
                new XElement("Level", loggingEvent.Level),
                new XElement("Identity", loggingEvent.Identity),
                new XElement("Domain", loggingEvent.Domain),
                new XElement("CreatedOn", DateTime.UtcNow.ToString(CultureInfo.InvariantCulture)),
                new XElement("RenderedMessage", message),
                new XElement("Location", loggingEvent.LocationInformation.FullInfo)
                );

            if (loggingEvent.Properties != null && loggingEvent.Properties.Count > 0)
            {
                var props = loggingEvent.Properties;
                if (props.Contains("AddPropertiesToXml"))
                {
                    foreach (var k in props.GetKeys())
                    {
                        var key = k.Replace(":", "_")
                                  .Replace("@", "_")
                                  .Replace(".", "_");
                        logXml.Add(new XElement(key, props[k].ToString()));
                    }
                }
            }

            if (loggingEvent.ExceptionObject != null)
            {
                logXml.Add(new XElement("Exception", loggingEvent.ExceptionObject.ToString()));
            }

            return(logXml.ToString());
        }
Ejemplo n.º 12
0
 public void DoAppend(log4net.Core.LoggingEvent loggingEvent)
 {
     if (loggingEvent.Level.CompareTo(Threshold) >= 0)
     {
         lock (this)
         {
             if (output == null)
             {
                 output = new StringWriter();
             }
             Layout.Format(output, loggingEvent);
         }
     }
 }
        private static string CalculateHostName(ILayout identity, LoggingEvent loggingEvent)
        {
            var writer = new StringWriter();

            if (identity != null)
            {
                identity.Format(writer, loggingEvent);
            }
            else
            {
                writer.Write(loggingEvent.Domain);
            }
            return(String.Format("{0}:", writer));
        }
        internal static string GetXmlString(this LoggingEvent loggingEvent, ILayout layout = null)
        {
            string message = loggingEvent.RenderedMessage + Environment.NewLine + loggingEvent.GetExceptionString();
            if (layout != null)
            {
                using (var w = new StringWriter())
                {
                    layout.Format(w, loggingEvent);
                    message = w.ToString();
                }
            }

            var logXml = new XElement(
                "LogEntry",
                new XElement("UserName", loggingEvent.UserName),
                new XElement("TimeStamp",
                    loggingEvent.TimeStamp.ToString(CultureInfo.InvariantCulture)),
                new XElement("ThreadName", loggingEvent.ThreadName),
                new XElement("LoggerName", loggingEvent.LoggerName),
                new XElement("Level", loggingEvent.Level),
                new XElement("Identity", loggingEvent.Identity),
                new XElement("Domain", loggingEvent.Domain),
                new XElement("CreatedOn", DateTime.UtcNow.ToString(CultureInfo.InvariantCulture)),
                new XElement("RenderedMessage", message),
                new XElement("Location", loggingEvent.LocationInformation.FullInfo)
                );

            if (loggingEvent.Properties != null && loggingEvent.Properties.Count > 0)
            {
                var props = loggingEvent.Properties;
                if (props.Contains("AddPropertiesToXml"))
                {
                    foreach (var k in props.GetKeys())
                    {
                        var key = k.Replace(":", "_")
                                   .Replace("@", "_")
                                   .Replace(".", "_");
                        logXml.Add(new XElement(key, props[k].ToString()));
                    }
                }
            }

            if (loggingEvent.ExceptionObject != null)
            {
                logXml.Add(new XElement("Exception", loggingEvent.ExceptionObject.ToString()));
            }

            return logXml.ToString();
        }
Ejemplo n.º 15
0
 public virtual void Append(Log log)
 {
     if (!v_closed)
     {
         v_layout.Format(v_writer, log);
         if (v_logmode == LogMode.Immediate)
         {
             WriteLogs();
         }
     }
     else
     {
         new ObjectDisposedException(string.Format("{0}/({1})", this.Name, "Writer"));
     }
 }
        public AzureLayoutLoggingEventEntity(LoggingEvent e, PartitionKeyTypeEnum partitionKeyType, ILayout layout)
        {
            Level = e.Level.ToString();
            Message = e.RenderedMessage + Environment.NewLine + e.GetExceptionString();
            ThreadName = e.ThreadName;
            EventTimeStamp = e.TimeStamp;
            using (var w = new StringWriter())
            {
                layout.Format(w, e);
                Message = w.ToString();
            }

            PartitionKey = e.MakePartitionKey(partitionKeyType);
            RowKey = e.MakeRowKey();
        }
        public AzureLayoutLoggingEventEntity(LoggingEvent e, PartitionKeyTypeEnum partitionKeyType, ILayout layout)
        {
            Level          = e.Level.ToString();
            Message        = e.RenderedMessage + Environment.NewLine + e.GetExceptionString();
            ThreadName     = e.ThreadName;
            EventTimeStamp = e.TimeStamp;
            using (var w = new StringWriter())
            {
                layout.Format(w, e);
                Message = w.ToString();
            }

            PartitionKey = e.MakePartitionKey(partitionKeyType);
            RowKey       = e.MakeRowKey();
        }
Ejemplo n.º 18
0
        /// <inheritdoc />
        /// <summary>
        ///     Formats the specified log entry.
        /// </summary>
        /// <param name="entry">The entry.</param>
        /// <returns>
        ///     The log <paramref name="entry" /> as a string
        /// </returns>
        public string FormatEntry(LogEntry entry)
        {
            LoggingEvent loggingEvent = Log4NetHelper.LogEntryToLoggingEvent(entry);

            if (loggingEvent == null)
            {
                return(string.Empty);
            }

            var builder = new StringBuilder();

            using (var writer = new StringWriter(builder))
            {
                _layout.Format(writer, loggingEvent);
                writer.Close();
            }

            return(builder.ToString());
        }
Ejemplo n.º 19
0
        public static string PreviewPattern(string InfoData, string LayoutType, string ConversionPattern, Object Host)
        {
            string       sResult = string.Empty;
            StringWriter oWriter = new StringWriter();
            LoggingEvent oEvent  = new LoggingEvent(Host.GetType(), null, "Logger Name", Level.All, InfoData, null);
            ILayout      oLayer  = (ILayout)Assembly.Load(Constants.msCONST_LOG4NET_ASSEMBLY_NAME).CreateInstance(LayoutType);

            if (null == oLayer)
            {
                sResult = "This pattern layout is not supported. No preview work.";
            }
            else
            {
                if (oLayer.GetType() == typeof(PatternLayout))
                {
                    ((PatternLayout)oLayer).ConversionPattern = ConversionPattern;
                    ((PatternLayout)oLayer).ActivateOptions();
                }
                oLayer.Format(oWriter, oEvent);
                sResult = oWriter.GetStringBuilder().ToString();
            }
            return(sResult);
        }
Ejemplo n.º 20
0
        public AzureLayoutLoggingEventEntity(LoggingEvent e, PartitionKeyTypeEnum partitionKeyType, ILayout layout)
        {
            Level          = e.Level.ToString();
            Message        = e.RenderedMessage + Environment.NewLine + e.GetExceptionString();
            ThreadName     = e.ThreadName;
            EventTimeStamp = e.TimeStamp;
            using (var w = new StringWriter())
            {
                layout.Format(w, e);
                Message = w.ToString();
            }

            // Azure Storage Table string is encoded as a UTF-16-encoded value.
            // String values may be up to 64 KB in size. Note that the maximum number of characters supported is about 32 K or less.
            // To be safe we allow 32k characters instead of 32KB of string.
            if (Message.Length >= 32000)
            {
                Message = $"{Message.Substring(0, 31987)}... TRUNCATED";
            }

            PartitionKey = e.MakePartitionKey(partitionKeyType);
            RowKey       = e.MakeRowKey();
        }
 public void Append(int level, string category, DateTime time, string content)
 {
     Exconsole.WriteLineColorEscaped(_layout.Format(level, category, time, content));
 }
 /// <summary>
 /// Format the logging event as an object.
 /// </summary>
 /// <param name="loggingEvent">The event to format</param>
 /// <returns>returns the formatted event</returns>
 /// <remarks>
 /// <para>Format the logging event as an object.</para>
 /// <para>Uses the <see cref="ILayout"/> object supplied to
 /// the constructor to perform the formatting.</para>
 /// </remarks>
 virtual public object Format(LoggingEvent loggingEvent)
 {
     return(m_layout.Format(loggingEvent));
 }
Ejemplo n.º 23
0
 private static string GetPatternLayoutData(ILayout layout, int maxsize, LoggingEvent loggevent)
 {
     return(GetLayoutData(maxsize, loggevent, (textWriter, loggevent1) => layout.Format(textWriter, loggevent)));
 }
Ejemplo n.º 24
0
 public void Append(int level, string category, DateTime time, string content)
 {
     Console.Error.WriteLine(_layout.Format(level, category, time, content));
 }
Ejemplo n.º 25
0
 private string Render(LoggingEvent loggingEvent, ILayout layout)
 {
     var m = new StringWriter();
     layout.Format(m, loggingEvent);
     return m.ToString();
 }
Ejemplo n.º 26
0
 public void Format(TextWriter writer, LoggingEvent loggingEvent)
 {
     InnerLayout.Format(writer, loggingEvent);
 }