private void RenderColumnLayout(LogEventInfo logEvent, Layout columnLayout, CsvQuotingMode quoting, StringBuilder target, int i)
        {
            if (i != 0)
            {
                target.Append(_actualColumnDelimiter);
            }

            if (quoting == CsvQuotingMode.All)
            {
                target.Append(QuoteChar);
            }

            int orgLength = target.Length;

            columnLayout.RenderAppendBuilder(logEvent, target);
            if (orgLength != target.Length && ColumnValueRequiresQuotes(quoting, target, orgLength))
            {
                string columnValue = target.ToString(orgLength, target.Length - orgLength);
                target.Length = orgLength;
                if (quoting != CsvQuotingMode.All)
                {
                    target.Append(QuoteChar);
                }
                target.Append(columnValue.Replace(QuoteChar, _doubleQuoteChar));
                target.Append(QuoteChar);
            }
            else
            {
                if (quoting == CsvQuotingMode.All)
                {
                    target.Append(QuoteChar);
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Formats the log event relying on inner layouts.
 /// </summary>
 /// <param name="logEvent">The logging event.</param>
 /// <param name="target"><see cref="StringBuilder"/> for the result</param>
 protected override void RenderFormattedMessage(LogEventInfo logEvent, StringBuilder target)
 {
     //Memory profiling pointed out that using a foreach-loop was allocating
     //an Enumerator. Switching to a for-loop avoids the memory allocation.
     for (int i = 0; i < Layouts.Count; i++)
     {
         Layout layout = Layouts[i];
         layout.RenderAppendBuilder(logEvent, target);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Renders the layout for the specified logging event by invoking layout renderers.
 /// </summary>
 /// <param name="logEvent">The logging event.</param>
 /// <param name="target"><see cref="System.Text.StringBuilder"/> for the result.</param>
 protected override void RenderFormattedMessage(LogEventInfo logEvent, System.Text.StringBuilder target)
 {
     Layout.RenderAppendBuilder(logEvent, target);
 }