Esempio n. 1
0
    public static void DefaultSetDestinationsProc(LogServerReceivedData data, LogServerOptions options)
    {
        FileSystem  fs       = options.DestFileSystem;
        PathParser  parser   = fs.PathParser;
        string      root     = options.DestRootDirName;
        LogPriority priority = data.JsonData !.Priority._ParseEnum(LogPriority.None);
        LogJsonData d        = data.JsonData;
        DateTime    date;

        if (d.TimeStamp.HasValue == false)
        {
            date = Util.ZeroDateTimeValue;
        }
        else
        {
            date = d.TimeStamp.Value.LocalDateTime.Date;
        }

        if (d.Kind._IsSamei(LogKind.Default))
        {
            if (priority >= LogPriority.Debug)
            {
                Add($"{d.AppName}/{d.MachineName}/Debug", d.AppName !, "Debug", date);
            }

            if (priority >= LogPriority.Info)
            {
                Add($"{d.AppName}/{d.MachineName}/Info", d.AppName !, "Info", date);
            }

            if (priority >= LogPriority.Error)
            {
                Add($"{d.AppName}/{d.MachineName}/Error", d.AppName !, "Error", date);
            }
        }
        else
        {
            Add($"{d.AppName}/{d.MachineName}/{d.Kind}", d.AppName !, d.Kind !, date);
        }

        void Add(string subDirName, string token0, string token1, DateTime date)
        {
            string yyyymmdd = Str.DateToStrShort(date);

            string tmp = parser.Combine(root, subDirName, $"{yyyymmdd}-{token0}-{token1}.log");

            data.AddDestinationFileName(parser.NormalizeDirectorySeparator(tmp));
        }
    }
Esempio n. 2
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());
        }
    }