Sardoan Geschrieben 17. September 2010 Geschrieben 17. September 2010 Hallo, ich will eine Log sortieren, habe meine Kernl Logs in eine Datei zusammengefasst und würde die gerne sortieren, in der Reihenfolge: Monat Tag Uhrzeit Orginal Sieht die Log so aus: MMM 15 oder MMM 7 und danach uhrzeit. Leider geht mit Collections.sort die Sortierung nicht optimal. Dachte da an nen comperator, aber ist schon länger her, dass ich den benutzt habe. Hätte gerne eine sortierung nach monaten und da nach den tagen. Bekomme sowas wie Sep 14...par zeilen später Sep 15 und dann wieder sep 14. Sitze da schon seit 2 tagen dran. Zitieren
Crush Geschrieben 17. September 2010 Geschrieben 17. September 2010 Mit den Informationen kann mir Dir gar nicht helfen. Nicht eine Zeile Code gepostet. So würde ich einfach mal sagen, der Code ist nicht korrekt. Was ist denn MMM und braucht man zum Sortieren nicht auch eine Vergleichsmethode? Du machst Doch hoffentlich nicht einfach eine Textzeilensortierung? Zitieren
Sardoan Geschrieben 17. September 2010 Autor Geschrieben 17. September 2010 (bearbeitet) Mit den Informationen kann mir Dir gar nicht helfen. Nicht eine Zeile Code gepostet. So würde ich einfach mal sagen, der Code ist nicht korrekt. Was ist denn MMM und braucht man zum Sortieren nicht auch eine Vergleichsmethode? Naja, ist etwas viel code. 8 Klassen sind ja schon paar hundert zeilen. Aber kennt einer eine gute Methode einen Linux kernl log (habe schon die gz und syslog.1 und syslog in einer temp) sinnvoll zu sortieren? Ich erzeuge mir in meinem Prog einfach eine zusammengesetzte datei aus den logs, hole sie in eine ArrayList und benutze sort um sie zu sortieren, aber das klappt nicht so ganz. Dachte auch schon, dass das prog zu fix vorgeht, habe nen sleep eingebaut, aber das tuts auch nicht. Also es geht nur um die sortierung der syslog nach monat und tag import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; public class Sortierung { /** * @param args the command line arguments */ public ArrayList<String> sortieren(String pfad) { ArrayList<String> list = new ArrayList<String>(); ArrayList<String> list1 = new ArrayList<String>(); //lesen try { BufferedReader in = new BufferedReader(new FileReader(pfad+"temp_syslog")); String zeile = null; while ((zeile = in.readLine()) != null) { list.add(zeile.toString()); } } catch (IOException e) { } //sortieren Collections.sort(list); //Einträge vom ersten und letzen Log in Liste adden, erster und letzter ausserhalb der Schleife list1.add(list.get(0).toString()); for (int i = 1; i < list.size(); i++) { if (!list.get(i - 1).toString().substring(0, 6).equals(list.get(i).toString().substring(0, 6))) { list1.add(list.get(i - 1).toString()); list1.add(list.get(i).toString()); } } list1.add(list.get(list.size() - 1).toString()); try { Thread.sleep(600); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list1; } } code zur sortierung Bearbeitet 17. September 2010 von Sardoan Zitieren
flashpixx Geschrieben 17. September 2010 Geschrieben 17. September 2010 Ich erzeuge mir in meinem Prog einfach eine zusammengesetzte datei aus den logs, hole sie in eine ArrayList und benutze sort um sie zu sortieren, aber das klappt nicht so ganz. implementiere die Comparable Schnittstelle korrekt, für Deine Sortierung Dachte auch schon, dass das prog zu fix vorgeht, habe nen sleep eingebaut, aber das tuts auch nicht. wie kommt man auf so abwegige Gedanken !? Zitieren
Sardoan Geschrieben 17. September 2010 Autor Geschrieben 17. September 2010 Hehe, weil die console oft zu lahm ist. Bin ja noch Anfänger. Aber habe schon paar fehler entdeckt. Ich wollte das prog auf einem niedrigen Level halten, also ohne comperator. Habe den Fehler in meinem Sortier-Algorithmus gefunden, trotzdem danke. Schwere geburt Zitieren
Amokloipher Geschrieben 20. September 2010 Geschrieben 20. September 2010 Wäre die einfachste Lösung nicht gewesen, die Log-Zeile einfach umzuschreiben? Du weisst an welcher Stelle in deinem String Monat bzw. Tag steht. Ziehs als substring und setz es an den Anfang deiner Zeile. Dann kannste auch .sort anwenden und die Sonne scheint. Nach dem Sortieren kannst du dann die beiden Informationen vorne wieder abschneiden. Is nich schön, dafür aber auch nicht komplex Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.