예제 #1
0
 public string FormatMessage(LogEventInfo logEvent)
 {
     if (!HasProperties(logEvent))
     {
         return(logEvent.Message);
     }
     // Prevent multiple layouts on different targets to render the same properties
     lock (logEvent)
     {
         using (var builder = _builderPool.Acquire())
         {
             logEvent.Message.Render(logEvent.FormatProvider ?? CultureInfo.CurrentCulture, logEvent.Parameters, _forceTemplateRenderer, builder.Item, out var messageTemplateParameterList);
             if (logEvent.PropertiesDictionary == null)
             {
                 if (messageTemplateParameterList != null && messageTemplateParameterList.Count > 0)
                 {
                     logEvent.PropertiesDictionary = new PropertiesDictionary(messageTemplateParameterList);
                 }
             }
             else
             {
                 logEvent.PropertiesDictionary.MessageProperties = messageTemplateParameterList;
             }
             return(builder.Item.ToString());
         }
     }
 }
예제 #2
0
 public string FormatMessage(LogEventInfo logEvent)
 {
     if (!HasParameters(logEvent))
     {
         return(logEvent.Message);
     }
     using (var builder = _builderPool.Acquire())
     {
         AppendToBuilder(logEvent, builder.Item);
         return(builder.Item.ToString());
     }
 }
예제 #3
0
        private StringBuilderPool.ItemHolder      _builder; // Not readonly to avoid struct-copy on Dispose(), and to avoid VerificationException when medium-trust AppDomain

        public AppendBuilderCreator(StringBuilder appendTarget, bool mustBeEmpty)
        {
            _appendTarget = appendTarget;
            if (_appendTarget.Length > 0 && mustBeEmpty)
            {
                _builder = _builderPool.Acquire();
            }
            else
            {
                _builder = new StringBuilderPool.ItemHolder(_appendTarget, null, 0);
            }
        }