读取中兴3G告警log告警文件到集合
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; }
读取中兴3G告警log告警文件到集合的更多相关文章
- 2018.2.12 PHP 如何读取一亿行的大文件
PHP 如何读取一亿行的大文件 我们可能在很多场景下需要用 PHP 读取大文件,之后进行处理,如果你没有相关的经验可以看下,希望能给你带来一些启发. 模拟场景 我们有一个 1亿 行,大小大概为 3G ...
- [转]Android输出Log到文件
前言:开发中遇到mx4这款机型Eclipse联调不上,logcat看不了,需要输出生成文件查看调试信息.网上搜了下,功能很完善了.startService和过滤输出信息需要自己添加设置,另外注意添加权 ...
- [转]读取assets目录下的数据库文件
在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...
- Android将Log写入文件
为什么要将Log写入文件 运行应用程序的时候,大多数是不会连接着IDE的: 而当应用程序崩溃时,我们需要收集复现步骤,在设备上复现,并进行Debug: 而由于Android手机的多样性,有些问题是某个 ...
- .net core 读取本地指定目录下的文件
项目需求 asp.net core 读取log目录下的.log文件,.log文件的内容如下: xxx.log ------------------------------------------beg ...
- SpringBoot读取Linux服务器某路径下文件\读取项目Resource下文件
// SpringBoot读取Linux服务器某路径下文件 public String messageToRouted() { File file = null; try { file = Resou ...
- 前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输
HTML5中的Blob对象只是二进制数据的容器,本身并不能操作二进制,故本篇将对其操作对象FileReader进行介绍. FileReader FileReader主要用于将文件内容读入内存,通过一系 ...
- 面试题-python 如何读取一个大于 10G 的txt文件?
前言 用python 读取一个大于10G 的文件,自己电脑只有8G内存,一运行就报内存溢出:MemoryError python 如何用open函数读取大文件呢? 读取大文件 首先可以自己先制作一个大 ...
- ubuntu /var/log/下文件介绍
本文简单介绍ubuntu /var/log/下各个日志文件,方便出现错误的时候查询相应的log /var/log/alternatives.log -更新替代信息都记录在这个文件中 /var/lo ...
随机推荐
- 升级到iis7 的web.config配置
经典模式或集成模式都识别system.webServers节点 aspnet的isapi分32位和64位 不存在时会报404或403
- C陷阱与缺陷(四)
第四章 连接 4.1 什么是连接器 C语言中的一个重要思想就是分别编译,即若干个源程序可以在不同的时候单独进行编译,然后在恰当的时候整合在一起.典型的连接器把由编译器或汇编器生成的若干个目标模块,整合 ...
- 转: css实现垂直居中的方法
利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 用 CSS 实现垂直居中并不容易.有些方法在一些浏览器中 ...
- Buy Tickets(线段树)
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 16607 Accepted: 8275 Desc ...
- float 覆盖元素的问题
<span class="right-span"><a href="/xxx/" class="btn">增加Ser ...
- ThinkPHP - Widget 工具
提出问题:widget能实现什么功能? 显示右侧博文: 1.首先在Home目录下新建Widget文件夹,之后建立对应文件 2.拿最热Hot新闻来举例: 在Tpl目录下Common公共文件夹里的righ ...
- 自定义ActionBar背景(分别针对3.0以下和3.0以上的版本)
官方原文:http://developer.android.com/training/basics/actionbar/styling.html 针对3.0以上的版本: <?xml versio ...
- jz2440开发板设置备份
___________________uboot______________________________________ OpenJTAG> pribootdelay=2baudrate=1 ...
- Python相关项目和技术
下面的项目是<Learn PYTHON the hard way>里面的,以后可能会补充: 1.Django,创建web程序的框架:https://www.djangoproject.co ...
- 如何设置ssh安全只允许用户从指定的IP登陆
原文链接: 如何设置ssh安全只允许用户从指定的IP登陆 由于开发上传文件需要 在服务器上开启 允许用户名和密码ssh登录.这样不太安全.百度后参考文章现在ssh用户名和密码登录的ip. 登录服务 ...