Last active
August 29, 2015 14:05
-
-
Save bashizip/9d87d9edb59a5bfe405c to your computer and use it in GitHub Desktop.
Kannel Acces Logs Parser , Writes outputs to CSV ( Excel ) File
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package kannellogsparser; | |
import java.io.BufferedReader; | |
import java.io.FileReader; | |
import java.io.IOException; | |
import java.nio.file.Files; | |
import java.nio.file.Paths; | |
import java.util.StringTokenizer; | |
/** | |
* | |
* @author bashizip | |
*/ | |
public class KannelLogsParser { | |
static String fileName; | |
/** | |
* @param args the command line arguments | |
*/ | |
public static void main(String[] args) throws IOException { | |
// fileName = args[0]; | |
fileName = "access_kannel.txt"; | |
String allLines = readLines(fileName); | |
parseAndWriteToCsv(allLines); | |
} | |
static String readLines(String fileName) { | |
BufferedReader br = null; | |
String sCurrentLine = null; | |
StringBuilder sb = new StringBuilder(); | |
try { | |
br = new BufferedReader( | |
new FileReader(fileName)); | |
while ((sCurrentLine = br.readLine()) != null) { | |
sb.append(sCurrentLine).append("\n"); | |
} | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} finally { | |
try { | |
if (br != null) { | |
br.close(); | |
} | |
} catch (IOException ex) { | |
ex.printStackTrace(); | |
} | |
} | |
return sb.toString(); | |
} | |
private static void parseAndWriteToCsv(String allLines) throws IOException { | |
String[] lines = allLines.split("\n"); | |
System.out.println("lines to parse : " + lines.length); | |
StringTokenizer st; | |
StringBuilder output = new StringBuilder(); | |
output.append("DATE;Heure;sent;SMS; SMSC; SVC; ACT; BINF; FID; from; to; flags; msg;;udh"+"\n"); | |
int count = 0; | |
for (String line : lines) { | |
count++; | |
System.out.println("Parsing ..." + 100 * count / lines.length + "%"); | |
st = new StringTokenizer(line, " "); | |
while (st.hasMoreTokens()) { | |
String currentToken = st.nextToken(); | |
boolean messageToken = false; | |
boolean afterMessageToken = false; | |
if (currentToken.startsWith("[")) { | |
System.out.println(currentToken); | |
messageToken = currentToken.startsWith("[msg"); | |
try { | |
currentToken = currentToken.substring(currentToken.indexOf(":") + 1, currentToken.indexOf("]")); | |
} catch (Exception e) { | |
System.err.println(e.getMessage()); | |
messageToken = true; | |
currentToken = currentToken.substring(currentToken.indexOf(":") + 1); | |
} | |
} | |
currentToken = currentToken.replace("[", ""); | |
currentToken = currentToken.replace("]", ""); | |
output.append(currentToken); | |
if (!messageToken) { | |
output.append(";"); | |
} else if (afterMessageToken) { | |
afterMessageToken = false; | |
output.append(" "); | |
} else { | |
output.append(" "); | |
afterMessageToken = true; | |
} | |
} | |
output.append("\n"); | |
} | |
Files.write(Paths.get(fileName + ".csv"), output.toString().getBytes()); | |
System.out.println("Output CVS file: " + fileName + ".csv"); | |
System.out.println("Finished !"); | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Cool!