我遇到問題。 我想製作一個程序,它需要一個日誌文件併爲它分析行。Java日誌文件讀取器,charAt()字符串索引超出範圍
日誌看起來是這樣的:
"2014-02-14 14:26:37,836 INFO [org.jboss.msc] (main) JBoss MSC version 1.0.4.GA-redhat-1"
我的代碼:
public static void main(String[] args) throws InterruptedException {
try
{
String sCurrentLine;
BufferedReader br = new BufferedReader(new FileReader("C:\\server.log"));
while ((sCurrentLine = br.readLine()) != null) {
String datetime = "";
String level = "";
String category = "";
String message = "";
String output = "";
if(sCurrentLine.length()<1){
}
else{
if (sCurrentLine.charAt(4)=='-' && sCurrentLine.charAt(7)=='-' && sCurrentLine.charAt(13)==':' && sCurrentLine.charAt(16)==':'){
String[] leerzeichen = sCurrentLine.split(" ");
String[] leerzeichenz = sCurrentLine.split(" ");
datetime = leerzeichen[0] + " " + leerzeichen[1];
level = leerzeichen[2];
category = leerzeichen[4];
int arraylength = leerzeichen.length;
for (int l=5; l<arraylength; l++){
message = message.concat(leerzeichen[l] + " ");
}
output = datetime + level + category + message;
} else {
message = message.concat(sCurrentLine);
output += message;
}
}
System.out.println(output);
}
} catch (IOException e) {
e.printStackTrace();
}
}
的計劃看,如果行的開頭是這樣的:0000-00-00 00:00: 00 如果不是,則線路只是與之前線路有關的消息。
但我總是得到錯誤:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:658)
at javaapplication5.JavaApplication5.main(JavaApplication5.java:38)
但他讀取日誌的一些行。但直到日誌結束。
你能幫我嗎?對不起我的英語不好。
你可以在'while'中打印'scurrentLine'來查看最後拾取的內容。這僅用於臨時調試目的。如果你可以使用調試器來檢查值,那麼更好的是 –