Problem:eine Log-Datei neu anordnen, basierend auf Schlüsselwörter
ich regelmäßig mit großen Log-Dateien arbeiten, und ich möchte einige relevante Daten organisieren, die zusammen sporadisch über die Datei geschrieben werden ist, um möglicherweise Probleme leichter zu verfolgen.
Beispiel von Daten in die Protokolldatei geschrieben:
1. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
2. 2016-05-05 15:07:54,993 DEBUG (default task-16) ==> More stuff written on this line.
3. 2016-05-05 15:07:54,993 DEBUG (default task-2) ==> More stuff written on this line.
4. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
5. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
6. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
7. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
8. 2016-05-05 15:07:54,993 DEBUG (default task-2) ==> More stuff written on this line.
9. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
10. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
11. 2016-05-05 15:07:54,993 DEBUG (default task-6) ==> More stuff written on this line.
12. 2016-05-05 15:07:54,993 DEBUG (default task-3) ==> More stuff written on this line.
13. 2016-05-05 15:07:54,993 DEBUG (default task-2) ==> More stuff written on this line.
14. 2016-05-05 15:07:54,993 DEBUG (default task-14) ==> More stuff written on this line.
15. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
Ich habe natürlich für die Gruppierung im Zusammenhang Linien zusammen zu verwenden (default aufgaben- NUMBER
) als meine Kennung gewählt.
Ich habe meine UI gebaut und die Idee ist, würde ich einen Extrakt aus der Quellprotokolldatei greifen und dann diese in eine jTextArea
innerhalb meiner Java-Anwendung einfügen, klicken Sie auf eine Schaltfläche und mag alle zugehörigen Aufgabennummern mag NUMBER
) werden zusammen gruppiert. (Zuerst eine einfache println
der gruppierten Daten zu meiner IDE dieser Daten wäre natürlich perfekt)
Ich arbeite derzeit an der Methode, die den gesamten Text in die jTextArea
eingefügt und durch sie funktioniert, erstellte Zeichenfolge Array, dass ich später erweitern können eine beliebige Anzahl von Aufgaben Zahlen zu finden, die zur Zeit hebt es alle Zahlen es findet, (nicht sicher, ob ich auf dem richtigen Weg bin aber):
import java.awt.Color;
import javax.swing.JTextArea;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
public class ArrangeLogic {
public void groupLogFile(JTextArea theLogs) {
String[] myStringArray = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35"};
for (int i = 0; i < myStringArray.length - 1; i++) {
String element = myStringArray[i];
String nextElement = myStringArray[i + 1];
String defaultTaskOdd = ("(default task-" + element + ")");
String defaultTaskEven = ("(default task-" + nextElement + ")");
System.out.println(defaultTaskOdd);
System.out.println(defaultTaskEven);
try {
Document document = theLogs.getDocument();
for (int index = 0; index + defaultTaskOdd.length() < document.getLength(); index++) {
String match = document.getText(index, defaultTaskOdd.length());
if (defaultTaskOdd.equals(match)) {
javax.swing.text.DefaultHighlighter.DefaultHighlightPainter highlightPainter
= new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
theLogs.getHighlighter().addHighlight(index, index + defaultTaskOdd.length(),
highlightPainter);
}
}
for (int index = 0; index + defaultTaskEven.length() < document.getLength(); index++) {
String match = document.getText(index, defaultTaskEven.length());
if (defaultTaskEven.equals(match)) {
javax.swing.text.DefaultHighlighter.DefaultHighlightPainter highlightPainter
= new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
theLogs.getHighlighter().addHighlight(index, index + defaultTaskEven.length(),
highlightPainter);
}
}
} catch (BadLocationException ex) {
}
}
}
}
ich um mit mehreren gespielt haben Ideen für den ganzen Tag (ja, ich bin ein sehr Neuling Entwickler), wie Sie alle Linien durchlaufen und gruppieren sie zusammen, ohne Glück, so dass ich dachte, ich würde um einen Rat bitten. Jede Hilfe oder Vorschläge würde sehr geschätzt werden. Vielen Dank.
(EDIT)
Erwartete Ausgabe (Zeilennummern sind nicht wichtig):
1. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
5. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
10. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
15. 2016-05-05 15:07:54,993 DEBUG (default task-1) ==> More stuff written on this line.
2. 2016-05-05 15:07:54,993 DEBUG (default task-16) ==> More stuff written on this line.
3. 2016-05-05 15:07:54,993 DEBUG (default task-2) ==> More stuff written on this line.
8. 2016-05-05 15:07:54,993 DEBUG (default task-2) ==> More stuff written on this line.
13. 2016-05-05 15:07:54,993 DEBUG (default task-2) ==> More stuff written on this line.
4. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
6. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
7. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
9. 2016-05-05 15:07:54,993 DEBUG (default task-33) ==> More stuff written on this line.
11. 2016-05-05 15:07:54,993 DEBUG (default task-6) ==> More stuff written on this line.
12. 2016-05-05 15:07:54,993 DEBUG (default task-3) ==> More stuff written on this line.
14. 2016-05-05 15:07:54,993 DEBUG (default task-14) ==> More stuff written on this line.
So möchten Sie die Liste der Standard-Task-Nummern bekommen? – Cukic0d
Ich brauche die gesamte Zeile, ich werde das zu meinem ursprünglichen Beitrag hinzufügen, danke! – BernardV
Sorry, ich bin mir nicht sicher, ob ich es verstanden habe ... Sie müssen die gesamte Zeile abhängig von der Standard-Aufgabennummer abrufen? – Cukic0d