- 浏览: 38565 次
- 性别:
- 来自: 北京
文章分类
最新评论
一、处理日志读取文件、过滤文件
package com.bhu.defender.front.controller; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.bhu.basestation.exception.BaseException; import com.bhu.defender.front.core.service.AlarmProcesserProxy; import com.bhu.defender.front.core.service.UserServiceProxy; /** * * @ClassName: LogAlarmStatController * @Description: 处理日志 添加数据到告警统计表st_Alarm_stat * @author:lijunling 2013-6-17 下午4:22:11 * @version V1.0 */ public class QuartzJob { /** * 插入数据 开始执行任务的方法 * @throws IOException */ public void logInsetAlarmStat() throws IOException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //获取上次执行的时间 String lastFileTime=""; Date lastDate = AlarmProcesserProxy.selectMaxCreateTime(); if(null!=lastDate){ lastFileTime = format.format(lastDate); } //本次执行的时间 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); Date date = calendar.getTime(); String fileTime = format.format(date); //判断上次执行日期是否是昨天 ,若是昨天,则只执行今天的操作 ,若非昨天,则从上次执行到今天均执行 //如:此次fileTime=07-04 lastFileTime=07-03 则处理日志07-03.log 和07-04.log if(!(lastFileTime.equals(fileTime))){ Long LastTime = lastDate.getTime(); Long thisTime = date.getTime(); while(LastTime<thisTime){ Logger logger= LoggerFactory.getLogger("basestation."+format.format(LastTime)+".log"); String filename = logger.getName(); String strPath = "/home/logs/"+filename; excuteFile(strPath); //执行完毕后 日期加1 Calendar cd = Calendar.getInstance(); cd.setTime(lastDate); cd.add(Calendar.DATE, +1); lastDate = cd.getTime(); LastTime = cd.getTime().getTime(); } }else{ Logger logger= LoggerFactory.getLogger("basestation."+fileTime+".log"); String filename = logger.getName(); //String filename ="basestation.2013-07-03.log"; //String strPath = "C:/Users/andy/Downloads/"+filename; String strPath = "/home/logs/"+filename; excuteFile(strPath); } } /** * 执行文件 * @param strPath 文件路径 * @throws IOException */ private void excuteFile(String strPath) throws IOException{ List <Integer> rowcountList = getRowList(strPath);//获取行的list List <List> allContentList = new ArrayList<List>(); if(rowcountList.size()!=0){ for(Integer item : rowcountList){ List<String> contentList = readAppointLineNumber(strPath,item); //若list中的最后一样含有result=0 则表示成功 是需要的数据 若为1则不成功 过滤掉 String lastRowStr = contentList.get(contentList.size()-1); if(lastRowStr.contains("result=0")){ allContentList.add(contentList); } } } processDataList(allContentList); } /** * 自动更新密码开始执行 */ public void autoUpdateRandompsw(){ try { UserServiceProxy.autoUpdateRandompsw(); } catch (BaseException e) { e.printStackTrace(); } } /** * 根据行号读取文本内容 返回list * @param path 文件路径 * @param lineNumber 行号 * @return * @throws IOException */ private List<String> readAppointLineNumber(String path,int lineNumber) throws IOException{ List<String> contentList = new ArrayList<String>(); FileReader file = new FileReader(path); LineNumberReader reader = new LineNumberReader(file); String readline = ""; int lines=0; while(readline != null){ lines++; readline = reader.readLine(); int sub = lines - lineNumber; //获取该行号开始的后几行 if(sub>=0 && sub<=7) { //System.out.println("当前行号为:"+reader.getLineNumber()); //System.out.println("=====s:"+readline); contentList.add(readline); }else if(sub>7){ //System.exit(0); } } reader.close(); file.close(); return contentList; } /** * 根据文件名返回存在需要的数值的行号的list * @param path 文件路径 * @return * @throws IOException */ private List<Integer> getRowList(String path) throws IOException{ FileReader file=new FileReader(path); List<Integer> rowcountList = new ArrayList<Integer>();//记录行号,第几行有需要的数据 BufferedReader br=new BufferedReader(file); String temp=null; int rowCount=0; while((temp =br.readLine())!=null){ rowCount++; /*按行读取 行中包含 am=addAlarmRealtime的记录行号*/ Pattern pattern = Pattern.compile("am=addAlarmRealtime"); Matcher matcher = pattern.matcher(temp); if(matcher.find()){ rowcountList.add(rowCount); } } br.close(); file.close(); return rowcountList; } /** * 根据需要的文本内容解析数据字段 * @param allContentList */ private void processDataList(List <List> allContentList){ for(List item:allContentList){ if(item.size()!=0){ String alarmTimeStr = ""; String alarmTypeIdStr = ""; String terminalCodeStr = ""; String terminalPortIdStr = ""; String typeStr = ""; for(int i=0;i<item.size();i++){ String []itemStr = item.get(i).toString().split(":"); if(itemStr.length>1){ if(i == 1){ alarmTimeStr = filterStr(itemStr[1]); }else if(i == 2){ alarmTypeIdStr = filterStr(itemStr[1]); }else if(i == 3){ terminalCodeStr = filterStr(itemStr[1]); }else if(i == 4){ terminalPortIdStr = filterStr(itemStr[1]); }else if(i == 5){ typeStr = itemStr[1]; } } } alarmTimeStr = alarmTimeStr.substring(0, 10); AlarmProcesserProxy.logInsertAalrmStat(terminalCodeStr,Integer.parseInt(alarmTypeIdStr),Integer.parseInt(terminalPortIdStr),alarmTimeStr); } } } /** * 过滤空格、双引号、单引号 * @param str * @return */ private String filterStr(String str){ str = str.replace("\"", "").replace(",", "").trim(); return str; } }
发表评论
-
java常用的工具类
2015-03-24 11:01 427附件中是常用的编码工具类 -
java本地下载上传图片
2015-01-23 13:58 872一、本地的一个下载url ... -
java properties文件读取
2014-10-17 15:35 452一、今天需要在properties文件中读取值 文件如下:de ... -
java拼写json串格式
2014-09-01 11:46 1151一、java后台拼写json串格式 "{\" ... -
java代码中读写xml文件、读excel文件
2014-07-15 16:33 825dom4j读写xml文件:参考地址:http://www.cn ... -
java中文转换成拼音
2014-07-02 09:14 595一、中文转换成拼音的类 public class Trans ... -
java中匹配一个字符串是否在数组中
2014-06-27 17:00 949一、检查字符串 是否 存在 数组中 引入apache的: im ... -
java中获取IP地址
2014-06-23 17:03 713一、java中获取ip地址 public static St ... -
Java中发送url请求,获取html内容,dom对象等
2014-06-23 15:18 1215一、根据url请求返回状态码 private static i ... -
java分页类
2014-06-08 20:30 521package Servlet; import java. ... -
java代码中文件下载
2014-04-17 17:09 422一、文件下载 @RequestMapping(value=& ... -
java装箱与拆箱
2014-02-17 21:20 489转载自:http://www.cnblogs.com/dann ... -
Log4j的用法
2014-01-09 14:07 715转自:http://www.blogjava.net/kit- ... -
Eclipse中debug Can't connect VM
2013-11-25 17:27 1008我用的是Eclipse,win7系统,run 项目正常,但是d ... -
js、java乱码、编码问题
2013-11-19 16:04 482一、java代码中的乱码问题: testString=&qu ...
相关推荐
总的来说,这个“java日志文件过滤”项目提供了一个便捷的工具,帮助开发者快速处理和分析日志数据,提高了问题排查和系统监控的效率。通过学习和理解这个项目,你可以深化对Java日志处理、文件I/O和条件过滤等技术...
这里每次读取一个字符,并打印出来,同时避免在Windows系统中处理换行符的特殊情况。 3. **按行读取文件内容** 对于文本文件,尤其是日志或配置文件,按行读取文件内容更为常见。Java提供`java.io.BufferedReader...
在Java编程语言中,读取文件是一项常见的操作,尤其是在处理数据、日志文件或配置信息时。本文将详细解析如何使用Java读取文本文件,基于提供的代码示例,深入探讨其工作原理及最佳实践。 ### Java读取文本文件的...
从给定的文件信息来看,主要关注点在于Java读取TXT文件的代码示例,以及如何处理和操作从TXT文件中读取的数据。下面将详细解释这一知识点。 ### Java读取TXT文件的基本流程 在Java中,读取TXT文件通常涉及以下几个...
在Java中处理GRIB2文件通常需要借助特定的库,例如ECMWF(欧洲中期天气预报中心)的JGRIB2库或Unidata的NetCDF-Java库。下面将详细介绍如何使用Java进行GRIB2文件的读取和解析。 1. **理解GRIB2文件结构**: GRIB2...
在Java开发中,文件上传和下载是常见的功能需求,尤其在Web应用中。"java文件上传,断点续传+aop操作日志"这个主题涵盖了几个关键知识点:文件上传、断点续传技术、AOP(面向切面编程)以及操作日志记录。 1. **...
在Java编程中,将数据从TXT文件读取并导入MySQL数据库是一项常见的任务,涉及到文件操作、字符串处理以及数据库交互等多个知识点。以下是对这些关键概念的详细解释: 1. **文件操作**:`FileOper.java`可能包含了对...
源代码通常会包含多个类,每个类可能对应着日志分析的一个特定步骤,比如读取日志文件、解析日志格式、处理分析结果等。 总的来说,这个Java日志分析工具提供了对日志数据进行处理和分析的功能,通过阅读源代码,...
总之,Java Swing应用可以通过`java.util.logging`包中的`Logger`类,结合`logging.properties`配置文件或在代码中动态设置,实现对错误日志的记录和管理。这不仅可以帮助开发者调试程序,也是生产环境中监控系统...
这个"STL.zip_java读取stl_stl读取_java"的主题涉及到使用Java编程语言来处理ASCII格式的STL文件。在Java中读取STL文件可以帮助我们解析其内部的几何数据,例如三角面片的顶点坐标,从而进行3D模型的构建和分析。 ...
适合做大量文本数据或日志文件入库的场景,大文本被拆分成多个线程处理,速度快。 批量插入MongoDB,存在则更新,不存在则自动新增。 包含Main方法调用案例,基于接口的通用设计,业务模块可自定义实现具体逻辑。
Java发送Syslog日志是一种常见的系统日志管理方式,尤其在分布式系统中,它能帮助开发者收集、分析和处理来自不同节点的日志信息。Syslog协议是一个标准的日志消息传递协议,广泛应用于网络设备、操作系统和其他软件...
这篇博客文章可能详细解释了如何在Java环境中实现对远程文件系统的访问,以便读取、写入或管理共享文件。 在Java中,可以使用开源库如jcifs(Java CIFS Client)来处理SMB/CIFS协议。jcifs库提供了SmbFile类,它...
* 日志文件的管理:使用PrintWriter类来写日志到文件中,并使用synchronized关键字来防止多线程同时操作日志文件。 * 异步写日志的实现:使用线程池或Executor框架来实现异步写日志,以提高日志记录的速度和效率。 ...
此外,描述中还提到了“java读取压缩文件解包压缩文件等各种文件操作类”,这意味着这个项目可能包含了一套完整的文件操作工具集,包括: - **压缩文件**:使用`ZipOutputStream`可以创建ZIP文件,将多个文件或目录...
在编程世界中,保持代码的一致性和可读性至关重要,这就是`Java`代码格式化和模板工具的作用。本文将深入探讨`Java`代码格式代码模板(code templates)和代码格式化器(code formatter),以及如何利用它们提升开发...
如果你的DLL文件包含了读取DLT645数据的原生函数,那么你需要使用这些技术将Java代码与DLL功能关联起来。 3. **Jar包**:Java Archive(JAR)文件是Java平台特有的归档格式,用于打包类文件、资源文件等。如果你的...
描述中提到的“日志处理类Log”可能具备这样的功能,而且它允许我们在程序运行过程中,无需重启,就能动态读取配置文件,这意味着我们可以在不中断服务的情况下调整日志策略。 具体到“动态读取配置文件”,这通常...
标题 "java 读取Ftp指定位置的文件解析并入库" 涉及到的是使用Java编程语言通过FTP(File Transfer Protocol)协议从远程服务器上下载文件,然后对下载的文件进行解析,并将解析得到的数据存储到数据库中。...
生产者(Producer)是Java代码的一部分,它负责将日志事件转换为消息并发布到Kafka的特定主题。消费者(Consumer)则订阅这些主题,处理和分析日志数据。 在日志处理系统中,Kafka可以与其他工具如Logstash或Flume...