public string FormatMessage(LogEventInfo logEvent)
        {
            if (LogMessageStringFormatter.HasParameters(logEvent))
            {
                using (var builder = _builderPool.Acquire())
                {
                    AppendToBuilder(logEvent, builder.Item);
                    return(builder.Item.ToString());
                }
            }

            return(logEvent.Message);
        }
        /// <inheritDoc/>
        public bool HasProperties(LogEventInfo logEvent)
        {
            if (!LogMessageStringFormatter.HasParameters(logEvent))
            {
                return(false);
            }

            if (_singleTargetOnly)
            {
                // Perform quick check for valid message template parameter names (No support for rewind if mixed message-template)
                TemplateEnumerator holeEnumerator = new TemplateEnumerator(logEvent.Message);
                if (holeEnumerator.MoveNext() && holeEnumerator.Current.MaybePositionalTemplate)
                {
                    return(false);   // Skip allocation of PropertiesDictionary
                }
            }

            return(true);    // Parse message template and allocate PropertiesDictionary
        }