Anzeige:
Ergebnis 1 bis 12 von 12

Thema: welche programmiersprache zum auslesen von logfiles

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.03.2006
    Beiträge
    53

    welche programmiersprache zum auslesen von logfiles

    Hallo !
    könnt ihr mir eine Programmiersprache empfehlen, welche LogFiles schnell ausliest und in eine Oracle-datenbank shreibt.
    Ablauf muss schnell sein, da sich die LogFiles täglich um mehrere GByte groß sind.

    Vielen dank

  2. #2
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Na hier ist wohl PLSQL prädestiniert.

    Schnell, einfach und nativ auf Oracle.
    Kein Gepfusche mit Datenbankconnectoren, etc.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.06.1999
    Beiträge
    677
    Kann PL/SQL denn Dateien auslesen und parsen? Gemäß http://www.ioug.org/python.pdf scheint PL/SQL dafür ungeeignet zu sein.

    Ich würde Dir also eher Python empfehlen, wenn Du eine leicht erlernbare/verstehbare Sprache verwenden willst. Wenn Du eine kryptische Sprache für Wurschtler bevorzugst, dann geht das auch sehr gut mit Perl.

  4. #4
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Perl ist nicht so kryptisch.

    Aber du brauchst natürlich bei Python einmal den Interpreter, etc.

    Bei PLSQL läuft das schon dort. Und natürlich kann man ganz bequem Files auslesen, zerlegen, schreiben und was sonst noch mit PLSQL. Sogar REGEX funzt damit.

    @Christoph:
    Leider ist das natürlich wieder mal ein Dokument ohne Datumsangabe, und damit in seiner Bewertung von PLSQL (welche Version?) unbrauchbar. Dazu reden die hier von einem SQL-Prompt. Damit arbeite ich auf Oracle aber schon lange nicht mehr in der Entwicklung, ausser hin und wieder in der Wartung um ein paar Skripts aufzurufen.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  5. #5
    Registrierter Benutzer
    Registriert seit
    29.03.2006
    Beiträge
    53
    ist es auch möglich mit log4j dies durchzuführen.
    und zwar liege die Logfiles in txt-format.
    und das parsen soll abends durchgeführt werden, und die werte möchte ich in einen Datawarehouse rein packen, um später das Nutzerverhalten zu analysieren.

    ist es möglich mit plsql einen automatischen start abends durchzuführen ?
    und ein weiteres Problem ist, wenn die logfiles von seiner Struktur her geändert werden, dann wird auch das parsen schwierig, da sollte schon eine dynamik rein !!!


    gibt es dazu vielleicht ein paar Tips ....

    danke
    Geändert von mr-sansibar (15-01-2007 um 20:59 Uhr)

  6. #6
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Also log4j verwendet man zum Schreiben von Logs. Nicht zum Lesen.

    Kommt halt drauf an, welches Ausgabeformat du zum Loggen verwendest.

    Wenn du XML verwendest, dann kannst du mit PLSQL ein einfaches insert ausführen, da Oracle auch XML-Dateien sehr einfach verarbeiten kann. Such einfach mal nach Oracle und XML.

    Oracle hat auch einen Scheduler. Mit dem kann man ähnlich wie mit Cron zeitgesteuert Skripte ausführen.

    Wenn du eine Java-Lösung bevorzugst, so wird es schon schwieriger. Zuerst musst du die Connections aufbauen. Dann eben in Java parsen und diese dann in die DB einfügen.

    mfg, Christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  7. #7
    Registrierter Benutzer
    Registriert seit
    29.03.2006
    Beiträge
    53
    kann man mit log4j die logfiles in text-form generieren und anschließend in eine datawarehouse speichern mit einer appender-funktion
    oder ist beides nicht möglich.
    sorry bin in diesem Gebiet log4j noch Neuling

  8. #8
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    log4j kann man so konfigurieren, dass es Logs in Textform oder in XML oder in anderen Formate generiert. Dazu kann man Patterns angeben für das Format. Würde dir dazu ein Buch oder die Apache-Seite ans Herz legen. Es ist zwar recht einfach zu konfigurieren für Standardsachen, aber schwer, wenn man etwas ganz bestimmtes sucht.

    Das ganze in einer DB zu speichern ist kein Problem.

    Ein Beispiel aus meinem Logfile:
    Code:
    <log4j:event logger="at.pdts.epa.prepaid.jsp.taglibrary.ResourceLangFieldTagFormat" timestamp="1168962885565" sequenceNumber="0" level="DEBUG" thread="WebContainer : 1">
    <log4j:message><![CDATA[unscaledBigDecimalToScaledBigDecimal(): No Typedef for: cardsDebit Value: 0]]></log4j:message>
    <log4j:properties>
        <log4j:data name="hostname" value="localhost"/>
        <log4j:data name="log4j.remoteSourceInfo" value="localhost:2577"/>
        <log4j:data name="log4jid" value="216"/>
    </log4j:properties>
    </log4j:event>
    Oder anderes log4j:
    Code:
    [2007-01-10 01:54:38,778] com.ibm._jsp._errorPage ERROR - function/adminfunctions/admin_view_data_carrier kazB4ai2HNKlBJjrJ_SIVkt java.lang.String Exception: java.lang.ClassCastException: java.lang.String
    Beides kann man parsen, wobei das erste einfacher zu parsen ist, da XML.

    Entweder du parst es vorher und zerteilst es in seine einzelnen Eigenschaften z.B. mit XPATH und machst dann ein insert (in java oder in plsql ist letztendlich wurst), oder du machst dir die Arbeit und arbeitest dich in die Oracle XML-Features ein und speicherst es direkt in der DB mit Hilfe eines XML-Schemas.

    Das wäre die eine Herangehensweisen. Es gibt aber noch und das ist was du wahrscheinlich suchst, nach dem du es endlich im 3. Post geschrieben hast ein JDBC-Appender für Log4j.

    Damit habe ich aber keinerlei Erfahrung. Google bitte daher nach JDBCAppender.

    mfg, Christian
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  9. #9
    Registrierter Benutzer
    Registriert seit
    29.03.2006
    Beiträge
    53
    @waxolunist:
    vielen dank, die logfiles liegen text form leider, daran wird sich auch nichts ändern.
    gibt es den keinen oracle-batch der das parsen übernacht übernimmt ?

  10. #10
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Ich dachte du könntest log4j konfigurieren? Dann könntest du 2 Appender konfigurieren. Einen für textFiles und einen für die DB.

    Ansonsten musst du den Parser selbst schreiben und den regelmäßig starten lassen, seis über einen Cron oder über den internen Scheduler von Oracle.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  11. #11
    Registrierter Benutzer Avatar von Waxolunist
    Registriert seit
    19.06.2006
    Ort
    Wien
    Beiträge
    485
    Nein, ein Appender parst nicht. Log4j liest nicht, es schreibt. Der JDBCAppender leitet die Ausgabe statt in ein Textfile, in ein DBMS um.

    Parsen: Das muss man selbst schreiben, oder du findest irgendein Programm, das genau die gleiche Art von Textfiles parst, die du erzeugst mit log4j, die gleiche Information extrahiert wie du sie benötigst, etc.......

    Parsen ist nicht schwer und geht mit jeder Programmiersprache.
    Spezialitäten heute: PLSQL, TSQL, Java (alles mit Webanwendungen), Groovy, Grails, ASP.NET, Javascript, Python, Django
    Straight through, ohne Umwege ans Ziel

  12. #12
    Registrierter Benutzer
    Registriert seit
    29.03.2006
    Beiträge
    53
    ok vielen dank !!!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •