日志文件解析实例
程序员文章站
2022-05-12 09:13:49
...
package com.umge.civony.log.file; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ActionLog { public static void main(String[] args) throws IOException { // copyFile("d:/a.log.old", "d:/b.log"); new ActionLog(); } private final Pattern p; private void parserLine(String str) { Matcher m = p.matcher(str); if (m.find()) { for (int i = 1; i < m.groupCount(); i++) { // System.out.println( i + " = " + m.group(i)); } } else { if (!str.startsWith("\t") && !str.endsWith("NullPointerException") && str.length() > 10) System.out.println(str); } } public ActionLog() throws IOException { String regEx = "([\\d]+) ([\\d|:]+) (.+) - (.+)\\((.*)"; p = Pattern.compile(regEx); FileInputStream fi = new FileInputStream("d:/a.log"); BufferedReader in = new BufferedReader( new InputStreamReader(fi, "utf8"), 1000); String dataline; while ((dataline = in.readLine()) != null) { this.parserLine(dataline); } } public static void copyFile(String source, String dest) throws IOException { File oldf = new File(source); File newf = new File(dest); if (oldf.exists()) { if (!newf.exists()) { File parent = new File(newf.getParent()); try { parent.mkdirs(); } catch (Exception ex) { ex.printStackTrace(); } newf.createNewFile(); } FileInputStream fr = new FileInputStream(oldf); FileOutputStream fw = new FileOutputStream(newf); byte[] cbuf = new byte[1000]; int i = 0; while ((i = fr.read(cbuf)) != -1) { for (int j = 0; j < i; j++) { if (cbuf[j] == 13) { cbuf[j] = 20; } } fw.write(cbuf, 0, i); } fw.close(); } } }