Zum Inhalt springen

Log Sertieren


Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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?

Geschrieben (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 von Sardoan
Geschrieben

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 !?

Geschrieben

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

Geschrieben

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 ;)

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...