处理特殊log语句的java函数
2014-04-04 15:20
495 查看
工作中经常需要将log中的某些有用的信息提取出来以供产品或者决策部门使用,自己写了一段小程序来定制这种信息提取动作。
public static boolean dealWithLog()
{
String charsetName="UTF-8";
String FilePath = "E:\\log\\";
String FileName = "Idraw.txt";
String FileOutName = "Idresult.txt";
String separatePattern = "发现来自";
String pattern_1 = "的恶意用户";
String pattern_2 = "在进行短信";
String fullFileName = FilePath+FileName;
String fullFileOutName = FilePath+FileOutName;
BufferedReader d;
BufferedWriter w;
InputStreamReader insReader;
OutputStreamWriter outWriter;
String temp;
String tempOut;
String tempTem;
int patternLen = separatePattern.length();
int pattern_1Len = pattern_1.length();
int pattern_2Len = pattern_2.length();
Map<String, String> idMap = new HashMap<String, String>();
int patternPos = -1;
int pattern_1Pos = -1;
int pattern_2Pos = -1;
int lineIndex = 0;
try
{
insReader = new InputStreamReader(new FileInputStream(fullFileName), charsetName);
outWriter = new OutputStreamWriter(new FileOutputStream(fullFileOutName), charsetName);
d = new BufferedReader(insReader);
w = new BufferedWriter(outWriter);
while(((temp = d.readLine()) != null) && (!temp.equalsIgnoreCase("")))
{
patternPos = temp.indexOf(separatePattern);
pattern_1Pos = temp.indexOf(pattern_1);
pattern_2Pos = temp.indexOf(pattern_2);
if (patternPos != -1 &&
pattern_1Pos != -1 &&
pattern_2Pos != -1)
{
tempTem = temp.substring(pattern_1Pos+pattern_1Len, pattern_2Pos);
System.out.println("--> No "+lineIndex+" line processed <--");
System.out.println("tempTem: >"+tempTem+"<");
String tmpMapVal = idMap.get(tempTem);
if (StringUtils.isEmpty(tmpMapVal))
{
System.out.println("added tempTem: >"+tempTem+"<");
idMap.put(tempTem, "gotIt");
}
}
lineIndex ++;
}
w.write("【2014-01-07,2014-01-08,2014-01-09获取短信失败的用户ID列表】");
w.newLine();
//w.flush();
for (String key : idMap.keySet()) {
w.write(key);
w.newLine();
w.flush();
}
w.close();
d.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
public static boolean dealWithLog()
{
String charsetName="UTF-8";
String FilePath = "E:\\log\\";
String FileName = "Idraw.txt";
String FileOutName = "Idresult.txt";
String separatePattern = "发现来自";
String pattern_1 = "的恶意用户";
String pattern_2 = "在进行短信";
String fullFileName = FilePath+FileName;
String fullFileOutName = FilePath+FileOutName;
BufferedReader d;
BufferedWriter w;
InputStreamReader insReader;
OutputStreamWriter outWriter;
String temp;
String tempOut;
String tempTem;
int patternLen = separatePattern.length();
int pattern_1Len = pattern_1.length();
int pattern_2Len = pattern_2.length();
Map<String, String> idMap = new HashMap<String, String>();
int patternPos = -1;
int pattern_1Pos = -1;
int pattern_2Pos = -1;
int lineIndex = 0;
try
{
insReader = new InputStreamReader(new FileInputStream(fullFileName), charsetName);
outWriter = new OutputStreamWriter(new FileOutputStream(fullFileOutName), charsetName);
d = new BufferedReader(insReader);
w = new BufferedWriter(outWriter);
while(((temp = d.readLine()) != null) && (!temp.equalsIgnoreCase("")))
{
patternPos = temp.indexOf(separatePattern);
pattern_1Pos = temp.indexOf(pattern_1);
pattern_2Pos = temp.indexOf(pattern_2);
if (patternPos != -1 &&
pattern_1Pos != -1 &&
pattern_2Pos != -1)
{
tempTem = temp.substring(pattern_1Pos+pattern_1Len, pattern_2Pos);
System.out.println("--> No "+lineIndex+" line processed <--");
System.out.println("tempTem: >"+tempTem+"<");
String tmpMapVal = idMap.get(tempTem);
if (StringUtils.isEmpty(tmpMapVal))
{
System.out.println("added tempTem: >"+tempTem+"<");
idMap.put(tempTem, "gotIt");
}
}
lineIndex ++;
}
w.write("【2014-01-07,2014-01-08,2014-01-09获取短信失败的用户ID列表】");
w.newLine();
//w.flush();
for (String key : idMap.keySet()) {
w.write(key);
w.newLine();
w.flush();
}
w.close();
d.close();
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return true;
}
相关文章推荐
- java 发送邮件测试例子
- 扩展SpringMVC以支持更精准的数据绑定1
- eclipse常用快捷键 --10大常用快捷键 可以提高不小的工作效率哦
- java static 与 线程 共用同步问题
- 工作的小经验之2:关于java和面向对象
- 什么是堆栈追踪(StackTrace)?如何利用StackTrace对程序进行调试?
- Eclipse中web项目引用 其他项目
- 重装Eclipse、离线安装ADT、Android SDK
- JAVA中Final的用法
- Java开发者应该列入年度计划的5件事
- JAVA动态代理 和 Spring AOP 4种通知的简单实现
- JAVA语言中的反射机制
- java多线程学习(二)——wait/notify
- Java中byte与16进制字符串的互相转换
- 对SpringIOC的理解(3)
- Java开发者应该列入年度计划的5件事
- java核心技术I
- SSL:javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible trunca
- Eclipse ALT+/失效解决方案
- java的集合