4k - Server Log Rewriter

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • 4k - Server Log Rewriter

      So - jetzt auch mein Progrämmchen für den Wettbewerb.

      Dieses Tool macht nichts anderes, als die Server-Log-Datei des Apache Webservers nach Domains zu splitten, und diese dann in Piwik, der open Source Statistik für Webseiten, zu imortiren. Das ist notwendig, wenn man mehrere Domains auf einem Hosting-Paket beteibt.

      WICHTIG
      Dem Programm liegt eine .dat Datei bei, welche in der 1. Zeile den Pfad zur Piwik-Installation (Verzeichnis misc/log-analytics) nthält, und in den weiteren Zeilen die Domains, und andere Werte.

      VORAUSSETZUNG
      Damit das Programm funktioniert, muss ein lokaler Webserver (wamp) und Piwik installiert sein. Ebenso muss Python installiert, und im Windows Path eingetragen sein, damit es einfach mit python gestartet werden kann.

      SCREENSHOT

      [Blockierte Grafik: http://s24.postimage.org/fr41un0k1/Screen_08_03_2013_14_Uhr_16_31_Sek.jpg]

      DER CODE

      Quellcode

      1. declare zeile$, datei$, ende%, logpfad$, ok%, tab&,i%,text&,count&, valid&, killed&, google&
      2. 'HAUPTPROGRAMM
      3. Set("TrueColor",0)
      4. WindowStyle 26
      5. WindowTitle "ServerLog Splitter (c) 2012 AGENTUR Matthias Griesbach"
      6. Window (%MaxX/2-430),(%MaxY/2-285) - 860,570
      7. PopUp "&Datei"
      8. AppendMenu 101,"&LogFile öffnen"
      9. AppendMenu 102,"&Beenden"
      10. 'PopUp "D&omains"
      11. 'AppendMenu 201,"Domains b&earbeiten"
      12. 'PopUp "&Web"
      13. 'AppendMenu 301,"ServerLog Splitter im Web"
      14. 'AppendMenu 302,"AGENTUR Matthias Griesbach"
      15. text&=Create("Text",%hwnd,"",5,5,840,16)
      16. tab&=Create("GridBox", %hwnd, "Domain;0;200;Log-Datei;0;160;Status;0;60;Piwik Id;1;70;Zeilen;1;60;Server;1;60;Google;1;60;Import;0;100", 1, 5, 25, 840, 490)
      17. datei$="server-log-rewriter.dat"
      18. Assign #1,datei$
      19. Reset #1
      20. If %IOResult
      21. Settext text&,"Daten-Datei kann nicht geöffnet werden!"
      22. Else
      23. Settext text&,"Lese Daten-Datei"
      24. Input #1, logpfad$
      25. WhileNot @EOF(#1)
      26. Input #1, zeile$
      27. AddString(tab&,zeile$)
      28. EndWhile
      29. Close #1
      30. EndIf
      31. ende%=1
      32. WHILE ende%
      33. WaitInput
      34. If @MenuItem(101)
      35. chdir logpfad$
      36. datei$=LoadFile$("Lade eine Logdatei","*.log")
      37. logpfad$=@GetDir$("@")
      38. 'Sicherstellen, das alle neuen Log-Dateien vorhanden leer sind.
      39. i%=0
      40. While i%<GetCount(tab&)
      41. SetText tab&, i%, 2, "open"
      42. Assign #2, logpfad$+chr$(92)+GetText$(tab&,i%,1)
      43. Rewrite #2
      44. If %IOResult
      45. Settext text&,GetText$(tab&,i%,1)+" kann nicht geöffnet werden."
      46. Endif
      47. Close #2
      48. SetText tab&, i%, 2, "closed"
      49. inc i%
      50. EndWhile
      51. 'Die Server-Log-Datei öffnen
      52. Assign #1,datei$
      53. Reset #1
      54. If %IOResult
      55. Settext text&,"Datei kann nicht geöffnet werden."
      56. Else
      57. Settext text&,"Lese Log-Datei"
      58. count&=0
      59. valid&=0
      60. killed&=0
      61. google&=0
      62. WhileNot @EOF(#1)
      63. Input #1, zeile$
      64. inc count&
      65. Settext text&,"Lese Log-Datei Zeile: "+str$(count&)+" davon "+str$(valid&)+" zugeordnet, "+str$(killed&)+" Server und "+str$(google&)+" Google"
      66. i%=0
      67. While i%<GetCount(tab&)
      68. If InStr(" "+GetText$(tab&,i%,0), zeile$)
      69. If InStr("213.160.85.131", zeile$)
      70. inc killed&
      71. Settext tab&,i%,5,str$(val(GetText$(tab&,i%,5))+1)
      72. ElseIf InStr(" Googlebot/2.1", zeile$)
      73. inc google&
      74. Settext tab&,i%,6,str$(val(GetText$(tab&,i%,6))+1)
      75. Else
      76. Assign #2, logpfad$+chr$(92)+GetText$(tab&,i%,1)
      77. Append #2
      78. If %IOResult
      79. Settext text&,GetText$(tab&,i%,1)+" kann nicht geöffnet werden."
      80. Else
      81. SetText tab&, i%, 2, "open"
      82. Print #2, zeile$
      83. Close #2
      84. inc valid&
      85. Settext tab&,i%,4,str$(val(GetText$(tab&,i%,4))+1)
      86. SetText tab&, i%, 2, "closed"
      87. Endif
      88. EndIf
      89. Endif
      90. inc i%
      91. EndWhile
      92. EndWhile
      93. Close #1
      94. EndIf
      95. 'Log-Dateien in Piwik importieren.
      96. i%=0
      97. While i%<GetCount(tab&)
      98. SetText text&, "Importiere "+GetText$(tab&,i%,1)
      99. SetText tab&, i%, 7, "wird ausgeführt"
      100. ok%=@WinExecWait("python import_logs.py --url=localhost/piwik "++GetText$(tab&,i%,1)+" --idsite="++GetText$(tab&,i%,3),1)
      101. if ok%=1
      102. SetText tab&, i%, 7, "erledigt"
      103. else
      104. SetText tab&, i%, 7, "fehler"
      105. EndIf
      106. inc i%
      107. EndWhile
      108. SetText text&, "Log-Daten verteilen und importieren abgeschlossen."
      109. 'c:\Program Files\wamp\www\piwik\misc\log-analytics> python import_logs.py --url=localhost/piwik preisvergleich.log --idsite=2
      110. ElseIf @MenuItem(102)
      111. ende%=0
      112. EndIf
      113. ENDWHILE
      Alles anzeigen
      DIE .Dat

      Quellcode

      1. C:\Program Files\wamp\www\piwik\misc\log-analytics\
      2. www.domain.tldt|domain.log|closed|1|0|0|0|ausstehend
      3. www.domain1.tldt|domain1.log|closed|2|0|0|0|ausstehend
      Diese Datei mit einem Texteditor erstllen, und als server-log-rewriter.dat im Programmverzeichnis speichern.

      MOTIVATION
      Meiner Meinung nach zeigt dieses Beispiel, wie einfach es sein kann, sich mit XProfan die Datenwelt zu vereinfachen.

      Gruß Matthias
      ProfanX2, Win7