public virtual string Format(LogSeverity severity, string payload, LoggingMeta meta, ILogger logger)
        {
            var stringBuilder = GetStringBuilder();

            stringBuilder.Clear();
            if (IncludeTimestampInMessage)
            {
                stringBuilder.AppendFormat("[{0}] ", DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff"));
            }
            if (IncludeLoggerNameInMessage)
            {
                stringBuilder.AppendFormat("[{0}] ", logger.Name);
            }
            if (IncludeSeverityInMessage)
            {
                stringBuilder.Append($"[{severity}] ");
            }
            stringBuilder.Append(payload);
            return(stringBuilder.ToString());
        }
Esempio n. 2
0
        public override string Format(LogSeverity severity, string payload, LoggingMeta meta, ILogger logger)
        {
            string message       = base.Format(severity, payload, meta, logger).Replace("\"", "\\\"").Replace("\n", "\\n");
            var    stringBuilder = GetStringBuilder();

            stringBuilder.Clear();

            stringBuilder.AppendFormat("{{\"severity\":\"{0}\",", severity);
            stringBuilder.AppendFormat("\"message\":\"{0}\",", System.Web.HttpUtility.JavaScriptStringEncode(message, false));
            stringBuilder.AppendFormat("\"timestamp\":\"{0}\",", DateTime.UtcNow.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.ffffff000Z", DateTimeFormatInfo.InvariantInfo));
            stringBuilder.AppendFormat("\"loggerName\":\"{0}\"", logger.Name);

            if (meta.Count > 0)
            {
                stringBuilder.Append(",\"labels\":{");
                bool first = true;
                foreach (var metaPair in meta)
                {
                    string value = null;
                    switch (metaPair.Value)
                    {
                    case DateTime dt:
                        value = string.Format("\"{0}\"", DateTime.UtcNow.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.ffffff000Z", DateTimeFormatInfo.InvariantInfo));
                        break;

                    case sbyte _:
                    case byte _:
                    case short _:
                    case ushort _:
                    case int _:
                    case uint _:
                    case long _:
                    case ulong _:
                        value = metaPair.Value.ToString();
                        break;

                    case bool bl:
                        value = bl ? "true" : "false";
                        break;

                    case float f:
                        value = f.ToString(CultureInfo.InvariantCulture);
                        break;

                    case double d:
                        value = d.ToString(CultureInfo.InvariantCulture);
                        break;

                    default:
                        value = System.Web.HttpUtility.JavaScriptStringEncode(metaPair.Value.ToString(), true);
                        break;
                    }

                    if (!first)
                    {
                        stringBuilder.Append(",");
                    }

                    stringBuilder.AppendFormat("\"{0}\":{1}", System.Web.HttpUtility.JavaScriptStringEncode(metaPair.Key, false), value);
                    first = false;
                }

                stringBuilder.Append("}");
            }

            stringBuilder.Append("}");

            return(stringBuilder.ToString());
        }