| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using System;
- namespace TeamAAS.Logging
- {
- /// <summary>日志来源:公共日志(AppLogger)或任务插件日志(PluginLogger)。</summary>
- public enum LogSource
- {
- /// <summary>公共日志(AppLogger,恒显示)。</summary>
- Common,
- /// <summary>任务插件日志(PluginLogger,受各节点 LogLevel 阈值约束)。</summary>
- Plugin
- }
- /// <summary>
- /// 内存日志条目(供实时日志控件 LogView 显示用)。
- /// 与写入文件的日志行相互独立:这里保留结构化字段,控件自行决定呈现格式。
- /// </summary>
- public class LogEntry
- {
- public LogEntry(DateTime time, LogSource source, LogLevel category,
- int level = 0, string flow = null, string task = null,
- string sourceTag = null, string message = null)
- {
- Time = time;
- Source = source;
- Category = category;
- Level = level;
- // 归一化详细度档位:插件 1/2 级 → 2,3/4 级 → 4;公共日志无等级 → 0
- Tier = level > 0 ? (level <= 2 ? 2 : 4) : 0;
- Flow = flow ?? "";
- Task = task ?? "";
- SourceTag = sourceTag ?? "";
- Message = message ?? "";
- }
- /// <summary>产生时间。</summary>
- public DateTime Time { get; }
- /// <summary>来源(公共/插件)。</summary>
- public LogSource Source { get; }
- /// <summary>日志类别(Debug/Info/Warning/Error/Critical),用于筛选与着色。</summary>
- public LogLevel Category { get; }
- /// <summary>插件条目详细度等级(1-4);公共日志为 0。</summary>
- public int Level { get; }
- /// <summary>归一化档位(2 或 4);公共日志为 0。仅用于打标签/分色,不参与显隐过滤。</summary>
- public int Tier { get; }
- /// <summary>所属流程名(插件)。</summary>
- public string Flow { get; }
- /// <summary>所属任务/节点名(插件)。</summary>
- public string Task { get; }
- /// <summary>公共日志来源标记(调用方传入的 source,如类名)。</summary>
- public string SourceTag { get; }
- /// <summary>日志正文。</summary>
- public string Message { get; }
- public string TimeText => Time.ToString("HH:mm:ss.fff");
- public string CategoryText => Category.ToString().ToUpperInvariant();
- public bool IsPlugin => Source == LogSource.Plugin;
- /// <summary>来源标签文本:插件显示 [流程][任务],公共显示 [source](无则空)。</summary>
- public string OriginText => IsPlugin
- ? string.Concat("[", Flow, "][", Task, "]")
- : (string.IsNullOrWhiteSpace(SourceTag) ? "" : string.Concat("[", SourceTag, "]"));
- /// <summary>插件档位标签文本(L2/L4);公共日志为空。</summary>
- public string TierText => Tier == 0 ? "" : "L" + Tier;
- }
- }
|