Пример #1
0
        /// <summary>
        /// Renders the specified log event context item and appends it to the specified <see cref="StringBuilder" />.
        /// </summary>
        /// <param name="builder">append to this</param>
        /// <param name="value">value to be appended</param>
        /// <param name="format">format string. If @, then serialize the value with the Default JsonConverter.</param>
        /// <param name="formatProvider">provider, for example culture</param>
        /// <param name="valueFormatter">NLog string.Format interface</param>
        public static void AppendFormattedValue(this StringBuilder builder, object value, string format, IFormatProvider formatProvider, IValueFormatter valueFormatter)
        {
            string stringValue = value as string;

            if (stringValue != null && string.IsNullOrEmpty(format))
            {
                builder.Append(value);  // Avoid automatic quotes
            }
            else if (format == MessageTemplates.ValueFormatter.FormatAsJson)
            {
                valueFormatter.FormatValue(value, null, CaptureType.Serialize, formatProvider, builder);
            }
            else if (value != null)
            {
                valueFormatter.FormatValue(value, format, CaptureType.Normal, formatProvider, builder);
            }
        }
Пример #2
0
            protected string GetParameterValue(ParameterValue value, IValueFormatter valueFormatter, State state)
            {
                //Adjust time zone
                if (value.Value is DateTime)
                {
                    value.Value = ((DateTime)value.Value).AdjustToTimeZone(state.Context.TimeZoneInfo);
                }

                string formattedValue;

                try
                {
                    formattedValue = valueFormatter.FormatValue(value, state.Context);
                }
                catch
                {
                    //The formatter couldn't format the value. Just print the value.
                    formattedValue = "" + value.Value;
                }

                return(value.Format(state.Context.StringEncoder, formattedValue));
            }
        public bool FormatValue(object value, string format, CaptureType captureType, IFormatProvider formatProvider, StringBuilder builder)
        {
            if (!_isStructured && captureType == NLog.MessageTemplates.CaptureType.Normal)
            {
                switch (Convert.GetTypeCode(value))
                {
                case TypeCode.String:
                {
                    builder.Append((string)value);
                    return(true);
                }

                case TypeCode.Char:
                {
                    builder.Append((char)value);
                    return(true);
                }

                case TypeCode.Empty:
                    return(true);     // null becomes empty string
                }
            }
            return(_originalFormatter.FormatValue(value, format, captureType, formatProvider, builder));
        }