using System;
using System.Text.Json.Serialization;
namespace CoreAgent.Domain.Models.Protocol;
///
/// RAN层日志实体类
/// 该实体用于记录RAN(无线接入网)相关的各层日志信息
/// 遵循DDD(领域驱动设计)原则,作为领域模型的一部分
///
public class RanLayerLog
{
///
/// GTP-U协议层日志级别
///
public string GTPU { get; set; }
///
/// LPPa协议层日志级别
///
public string LPPa { get; set; }
///
/// M2AP协议层日志级别
///
public string M2AP { get; set; }
///
/// MAC协议层日志级别
///
public string MAC { get; set; }
///
/// NAS协议层日志级别
///
public string NAS { get; set; }
///
/// NGAP协议层日志级别
///
public string NGAP { get; set; }
///
/// NRPPa协议层日志级别
///
public string NRPPa { get; set; }
///
/// PDCP协议层日志级别
///
public string PDCP { get; set; }
///
/// PHY协议层日志级别
///
public string PHY { get; set; }
///
/// RLC协议层日志级别
///
public string RLC { get; set; }
///
/// RRC协议层日志级别
///
public string RRC { get; set; }
///
/// S1AP协议层日志级别
///
public string S1AP { get; set; }
///
/// TRX协议层日志级别
///
public string TRX { get; set; }
///
/// X2AP协议层日志级别
///
public string X2AP { get; set; }
///
/// XnAP协议层日志级别
///
public string XnAP { get; set; }
///
/// PROD协议层日志级别
///
[JsonIgnore]
public string PROD { get; set; }
///
/// 初始化RAN层日志级别
///
/// 是否为非独立组网模式(NSA模式)
public void InitializeLogLevels(bool isNonStandaloneMode = false)
{
GTPU = LogLevel.Warn.ToString().ToLower();
LPPa = LogLevel.Warn.ToString().ToLower();
M2AP = LogLevel.Warn.ToString().ToLower();
MAC = LogLevel.Warn.ToString().ToLower();
NAS = LogLevel.Warn.ToString().ToLower();
NGAP = LogLevel.Warn.ToString().ToLower();
NRPPa = LogLevel.Warn.ToString().ToLower();
PDCP = LogLevel.Warn.ToString().ToLower();
PHY = LogLevel.Warn.ToString().ToLower();
RLC = LogLevel.Warn.ToString().ToLower();
RRC = LogLevel.Warn.ToString().ToLower();
S1AP = LogLevel.Warn.ToString().ToLower();
TRX = LogLevel.Warn.ToString().ToLower();
X2AP = LogLevel.Warn.ToString().ToLower();
XnAP = LogLevel.Warn.ToString().ToLower();
PROD = LogLevel.Warn.ToString().ToLower();
}
///
/// 更新指定层的日志级别
///
/// 层名称
/// 日志级别
/// 是否更新成功
public bool UpdateLogLevel(string layerName, LogLevel logLevel)
{
if (string.IsNullOrEmpty(layerName))
return false;
var property = GetType().GetProperty(layerName);
if (property == null)
return false;
property.SetValue(this, logLevel.ToString().ToLower());
return true;
}
}