读取中兴3G告警log告警文件到集合

1、文件格式

ALARM_ID=102305_404205
EVENT_TIME=2016-08-16 10:00:09
NOTIFICATION_TYPE=1
MANAGED_OBJECT_INSTANCE=NodeId=102305,BssId=0,BtsId=470,RackId=2
PERCEIVED_SEVERITY=4
ALARM_TYPE=4
PROBABLE_CAUSE=550
SPECIFIC_PROBLEM=直流电压低于47V(RRU干结点监控)
ADDITIONAL_TEXT=AlarmCode(1005020),AlarmInfo(The subsystem No. is 5, RRU_INFO=[RRU ID=0, 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;

                string[] lines = System.IO.File.ReadAllLines(reAlarmFiles[0], Encoding.Default);
                foreach (string line in lines)
                {
                    if (line.IndexOf("ALARM_ID") > -1)
                    {
                        alarm = new AlarmEntities3GZte();
                    }

                    if (line != null && !"".Equals(line.Trim()))
                    {
                        alarm = Line2Property(line, alarm);
                    }

                    if (line.IndexOf("ADDITIONAL_TEXT") > -1 && 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(-1);
            }
            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);

            if (properties.Length <= 0)
            {
                return alarm;
            }
            foreach (System.Reflection.PropertyInfo item in properties)
            {
                string name = item.Name;
                object value = item.GetValue(alarm, null);
                if (line.IndexOf(name) > -1)
                {
                    item.SetValue(alarm, line.Replace(name + "=", ""), null);
                    break;
                }
            }

            return alarm;
        }
时间: 2024-10-07 05:55:56

读取中兴3G告警log告警文件到集合的相关文章

alert_sid.log 告警日志找不到怎么办?

总是有一些DBA或者工程师安装的数据库不够规范,按照常规讨论找不到告警日志文件.告诉大家一个小方法,不管你怎么不按照套路出牌,我都能找到告警日志. 1.查看参数background_dump_destSQL> show parameter dump NAME TYPE VALUE background_core_dump string partialbackground_dump_dest string /u01/app/diag/rdbms/bdpdb/bdpdb/tracecore_dump

Android开发系列(十七):读取assets目录下的数据库文件

在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中写的一个小游戏的一个问题,另外也可以读取Raw目录下的数据库文件) 这就造成了一个问题,这个问题其实很好解决,解决方法如下: 我们首先把有数据的数据库文件放在assets资源目录下边,然后在apk应用启动的时候,把assets目录下的数据库文件的数据写入到真机的内存中去. 下边开始我们的代码编写:

SpringBoot读取Linux服务器某路径下文件\读取项目Resource下文件

// SpringBoot读取Linux服务器某路径下文件 public String messageToRouted() { File file = null; try { file = ResourceUtils.getFile("/home/admin/logs/test/routed.txt"); // 获取文件输入流 InputStream inputStream = new FileInputStream(file); List<String> fileList

Linux查看/var/log/wtmp文件的方法

/var/log/wtmp文件的作用 /var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息. 该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统正常运行时间的增加,该文件的大小也会越来越大, 增加的速度取决于系统用户登录的次数.该日志文件可以用来查看用户的登录记录, last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户.终端tty或时间显示相应的记录. 查看方法: 可以用last命令输出当中内

ubuntu /var/log/下文件介绍

本文简单介绍ubuntu /var/log/下各个日志文件,方便出现错误的时候查询相应的log   /var/log/alternatives.log -更新替代信息都记录在这个文件中 /var/log/apport.log -应用程序崩溃记录 /var/log/apt/   -用apt-get安装卸载软件的信息 /var/log/auth.log   -登录认证log /var/log/boot.log  -包含系统启动时的日志./var/log/btmp    -记录所有失败启动信息 /va

Java API 读取HDFS目录下的所有文件

/** * 获取1号店生鲜食品的分类id字符串 * @param filePath * @return */ public String getYHDSXCategoryIdStr(String filePath) { final String DELIMITER = new String(new byte[]{1}); final String INNER_DELIMITER = ","; // 遍历目录下的所有文件 BufferedReader br = null; try { F

ServletContext读取Web应用中的资源文件

1 package cn.itcast; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.util.Properties; 8 9 import javax.servlet.ServletContext; 10 import javax.servlet.Servlet

解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题

本文摘自:(http://blog.csdn.net/stevencn76/article/details/6246162) 分类: Java技术专区2011-03-13 12:25 5017人阅读 评论(1) 收藏 举报 tomcatlinux工具任务web 由于Tomcat在默认情况下会将没有经过配置的web应用所产生的日志输出已经其本身的日志内容都输出到这个文件中,那么随着时间的推移,这个文件的尺寸将会越来越大,当需要检查日志内容时间会导致文件难以打开,而且同时tomcat依旧在不断的向文

读取web应用下的资源文件(例如properties)

1 package gz.itcast.b_resource; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Properties; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRe