1、文件格式
ALARM_ID=102305_404205 EVENT_TIME=-- :: NOTIFICATION_TYPE= MANAGED_OBJECT_INSTANCE=NodeId=,BssId=,BtsId=,RackId= PERCEIVED_SEVERITY= ALARM_TYPE= PROBABLE_CAUSE= SPECIFIC_PROBLEM=直流电压低于47V(RRU干结点监控) ADDITIONAL_TEXT=AlarmCode(),AlarmInfo(The subsystem No. , RRU_INFO=[RRU ID=, Alias=武隆中兴隧道RRU0_江口支局, Type=RRU])
2、创建实体类
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LteAlarmAnalysis.Entities { /// <summary> /// 中兴 3G 告警Ftp下载数据实体 /// 日期 : 2016年8月16日 /// 作者 : 老郑 /// /// ALARM_ID=102301_928516 /// EVENT_TIME=2016-08-16 09:59:35 /// NOTIFICATION_TYPE=5 /// MANAGED_OBJECT_INSTANCE=NodeId=102301,BssId=0,BtsId=38,RackId=2 /// PERCEIVED_SEVERITY=6 /// ALARM_TYPE=4 /// PROBABLE_CAUSE=550 /// SPECIFIC_PROBLEM=直流电压低于51V或交流故障(RRU干结点监控) /// ADDITIONAL_TEXT=AlarmCode(1005019),AlarmInfo(The subsystem No. is 9, RRU_INFO=[RRU ID=4, Alias=万州石桥毛岭RRU_武陵支局, Type=RRU]) /// </summary> public class AlarmEntities3GZte { public string ALARM_ID { get; set; } public string EVENT_TIME { get; set; } public string NOTIFICATION_TYPE { get; set; } public string MANAGED_OBJECT_INSTANCE { get; set; } public string PERCEIVED_SEVERITY { get; set; } public string ALARM_TYPE { get; set; } public string PROBABLE_CAUSE { get; set; } public string SPECIFIC_PROBLEM { get; set; } public string ADDITIONAL_TEXT { get; set; } } }
3、数据读取到List集合
/// <summary> /// 读取告警转换为集合 /// </summary> private IList<AlarmEntities3GZte> Alarm2AlarmEntities3GZte() { IList<AlarmEntities3GZte> list = new List<AlarmEntities3GZte>(); try { TaskConfig.SpanTime = Stopwatch.StartNew(); var reAlarmFiles = Directory.GetFiles(TaskConfig.SavePath, TaskConfig.FileMatch); AlarmEntities3GZte alarm = null; ], Encoding.Default); foreach (string line in lines) { ) { alarm = new AlarmEntities3GZte(); } if (line != null && !"".Equals(line.Trim())) { alarm = Line2Property(line, alarm); } && alarm != null) { list.Add(alarm); } } WriteMessage.PrintMassage(MessageType.Success, String.Format("解析中兴告警文件成功,共解析出小区发生不同告警数据量:{0} 条,总数据量为:{1} 条,共耗时:{2}毫秒" , list.Count, list.Count, TaskConfig.SpanTime.ElapsedMilliseconds)); } catch (Exception ex) { WriteMessage.PrintMassage(MessageType.Error, String.Format("解析中兴告警文件失败,错误信息:{0}", ex)); Environment.Exit(-); } return list; } private AlarmEntities3GZte Line2Property(string line, AlarmEntities3GZte alarm) { if (alarm == null) { alarm = new AlarmEntities3GZte(); } System.Reflection.PropertyInfo[] properties = alarm.GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public); ) { return alarm; } foreach (System.Reflection.PropertyInfo item in properties) { string name = item.Name; object value = item.GetValue(alarm, null); ) { item.SetValue(alarm, line.Replace(name + "=", ""), null); break; } } return alarm; }