示例#1
0
        public void WriteRecordToBuffer(LogInfoOptions opt, MemoryBuffer <byte> b)
        {
            if (opt.WriteAsJsonFormat && Dbg.IsJsonSupported)
            {
                // JSON text
                LogJsonData jc = new LogJsonData();

                if (opt.WithTimeStamp)
                {
                    jc.TimeStamp = this.TimeStamp;
                }

                if (opt.WithGuid)
                {
                    jc.Guid = this.Guid;
                }

                if (opt.WithMachineName)
                {
                    jc.MachineName = opt.MachineName;
                }

                if (opt.WithAppName)
                {
                    jc.AppName = opt.AppName;
                }

                if (opt.WithKind)
                {
                    jc.Kind = opt.Kind;
                }

                if (opt.WithPriority)
                {
                    jc.Priority = this.Priority.ToString();
                }

                if (opt.WithTag)
                {
                    jc.Tag = this.Tag._FilledOrDefault(LogTag.None);
                }

                if (opt.WithTypeName)
                {
                    jc.TypeName = this.Data?.GetType().Name ?? "null";
                }

                jc.Data = this.Data;

                string jsonText = jc._GetObjectDump(jsonIfPossible: true);

                b.Write(jsonText._GetBytes_UTF8());
                b.Write(CrLfByte);
            }
            else
            {
                // Normal text
                StringBuilder sb = new StringBuilder();

                // Timestamp
                if (opt.WithTimeStamp)
                {
                    sb.Append(this.TimeStamp._ToDtStr(true, DtStrOption.All, false));
                    sb.Append(" ");
                }

                // Additional strings
                List <string?> additionalList = new List <string?>();

                if (opt.WithGuid)
                {
                    additionalList.Add(this.Guid);
                }

                if (opt.WithMachineName)
                {
                    additionalList.Add(opt.MachineName);
                }

                if (opt.WithAppName)
                {
                    additionalList.Add(opt.AppName);
                }

                if (opt.WithKind)
                {
                    additionalList.Add(opt.Kind);
                }

                if (opt.WithPriority)
                {
                    additionalList.Add(this.Priority.ToString());
                }

                if (opt.WithTag)
                {
                    additionalList.Add(this.Tag._FilledOrDefault(LogTag.None));
                }

                if (opt.WithTypeName)
                {
                    additionalList.Add(this.Data?.GetType().Name ?? "null");
                }

                string additionalStr = Str.CombineStringArray(" ", additionalList.ToArray());
                if (additionalStr._IsFilled())
                {
                    sb.Append("[");
                    sb.Append(additionalStr);
                    sb.Append("] ");
                }

                // Log text
                string logText = GetMultilineText(GetTextFromData(this.Data, opt), opt);
                sb.Append(logText);
                sb.Append("\r\n");

                b.Write(sb.ToString()._GetBytes_UTF8());
            }
        }