franzmann
Goto Top

Apache Logfile- Größe begrenzen

Hallo,
wie der Titel schon sagt.
Wie kann ich es anstellen das die Logfiles meines Apachen nicht unendlich groß werden ?
Ich möchte die Größe gerne auf eine bestimmte MB-Zahl begrenzen.
Jemand ne Idee ?

Content-Key: 72239

Url: https://administrator.de/contentid/72239

Ausgedruckt am: 29.03.2024 um 09:03 Uhr

Mitglied: TuXHunt3R
TuXHunt3R 29.10.2007 um 23:23:23 Uhr
Goto Top
Wie genau stellst du dir das dann vor? Sollen die ältesten Einträge beim Erreichen dieser MB-Grenze dann aus der Datei gelöscht werden oder wie genau?
Mitglied: IRIXuser
IRIXuser 30.10.2007 um 07:47:47 Uhr
Goto Top
läuft dein apache unter linux oder windows?

unter linux gibt es nettes programm namens sed (stream oriented editor). damit kannst du in einer beliebigen datei nach bestimmten zeilen suchen und die löschen oder editieren. eine genaue beschreibung des editors erhälst du aus den manual pages ( man sed ).
damit solltest du dein problem lösen können. die zeilen beginnen immer mit einem bestimmten muster (zeit, datum). du suchst mit dem sed z.B nach zeilen die älter sind als X tagen und löscht sie einfach. um die größe zu beeinflussen, müsste man mehr aufwand betreiben. ersteinmal die größe der datei ermitteln, ist sie größer als deine vorgabe, löscht du eine bestimmte anzahl an zeilen in der datei. das kann man mit einem shellscript realisieren, das wiederum mit cron gestartet wird, wenn der rechner startet oder nach einer bestimmten zeitvorgabe dein logfile überprüft.
Mitglied: Biber
Biber 30.10.2007 um 07:51:20 Uhr
Goto Top
...und wenn Linux, dann doch auf jeden Fall die tonnenweise im Netz vorhandenen "logrotate"-Skripte suchen und nutzen.

Grüße
Biber
Mitglied: IRIXuser
IRIXuser 30.10.2007 um 07:59:48 Uhr
Goto Top
ja na klar! warum das rad neu erfinden? aber mit dem sed üben macht spass und lehrt den umgang mit regular expressions {;-]
Mitglied: Franzmann
Franzmann 30.10.2007 um 08:19:33 Uhr
Goto Top
Erstmal thx@all
Soll auf nem W2K3 Server passieren.
Also am besten wäre es, wenn ein bestimmtes Limit erreicht ist, löscht er die letzten
100 EInträge zum Beispiel. Nach Zeitstempel könnte man aber auch arbeiten.
Werde mir mal "logrotate"-Skripte und sed anschauen !
So far...
Mitglied: IRIXuser
IRIXuser 30.10.2007 um 08:39:59 Uhr
Goto Top
hallo,

also mit windows server kenn ich mich nicht so gut aus.
soweit ich weiss, ist sed nur unter UNIX zu benutzen.

aber es gibt hier bestimmt teilnehmer, die sich mit windows auskennen......
Mitglied: Franzmann
Franzmann 30.10.2007 um 09:19:50 Uhr
Goto Top
Hey,
ja kein Ding.
Hab gerade festgestellt das beide angesprochenen Varianten nur für Linux/ Unix gelten face-sad
Muss ich mal weitersuchen...
Mitglied: bastla
bastla 30.10.2007 um 13:38:26 Uhr
Goto Top
Hallo Franzmann!

"GNU sed v4.0.7" für DOS/Windows findest Du, zusammen mit anderen Versionen, zB hier ...

Grüße
bastla
Mitglied: Franzmann
Franzmann 30.10.2007 um 14:45:30 Uhr
Goto Top
Ok habe es jetzt wie folgt angefangen.
Das Skript hab ich mir hier im Forum gesucht:
@echo off & setlocal
set "Summary=D:\error_summary.log"
set "Filter=?????"

if exist "%Summary%" del "%Summary%"
for %%i in (D:\error.log) do (
findstr /b "%Filter%" "%%i">nul && (
echo Logfilename: %%i
for /f "delims=" %%a in ('findstr /b "%Filter%" "%%i"') do echo %%a
echo.
)>>"%Summary%"
if exist "%Summary%" ren "%Summary%" error.log
)

Wie stelle ich es jetzt noch an, den Filter so zu setzen das er mir Logeinträge die älter als 5Tage sind löscht. Das Format sieht so aus:
[Wed Sep 12 10:11:51 2007]
set "Filter=..."
%day% %date% %time% %year%
Mitglied: IRIXuser
IRIXuser 30.10.2007 um 15:08:46 Uhr
Goto Top
@Franzmann

Also ich muss da leider passen. Würde dir gern helfen, aber ich kenne die Syntax nicht. (ist das VBS? oder Batch? ).

Aber ich werde den Beitrag weiter verfolgen um zu sehen wie man sowas unter Windows realisiert.

Viel Erfolg weiterhin...
Mitglied: Franzmann
Franzmann 30.10.2007 um 15:16:29 Uhr
Goto Top
@Franzmann

Also ich muss da leider passen. Würde
dir gern helfen, aber ich kenne die Syntax
nicht. (ist das VBS? oder Batch? ).

Ist ne Batch
Aber ich werde den Beitrag weiter verfolgen
um zu sehen wie man sowas unter Windows
realisiert.
Nicht so einfach ;)

Viel Erfolg weiterhin...
Danke !
Mitglied: bastla
bastla 30.10.2007 um 15:42:21 Uhr
Goto Top
Hallo Franzmann!

Nicht so einfach ;)
... würde ich bei diesem Datumsformat ([Wed Sep 12 10:11:51 2007]) auch sagen, daher folgende Fragen:
  • Könntest (wolltest) Du das Format auf "YYYY-MM-DD ..." (oder noch besser "YYYYMMDD ...") ändern, bzw falls nicht:
  • Wird der Tag mit oder ohne führende Null geschrieben ("Wed Sep 05" oder "Wed Sep 5")?
  • Steht Datum/Zeit tatsächlich zwischen "[" und "]"?
  • Könnte es sein, dass der String "Sep 12" auch in Zeilen auftaucht, die nicht gelöscht werden sollen?

Grüße
bastla
Mitglied: Franzmann
Franzmann 30.10.2007 um 15:53:46 Uhr
Goto Top
Hab gerade schon gemerkt das es zu kompliziert wird.
@bastla:
Hab das nun anders vor.
Das Skript soll alle Zeilen löschen bis auf die letzten X Zeilen.
Kannst du mir sagen wie ich das anstelle ?
Mitglied: Franzmann
Franzmann 30.10.2007 um 16:17:28 Uhr
Goto Top
Ach ja...ganz vergessen...
* Könntest (wolltest) Du das Format auf "YYYY-MM-DD ..." (oder noch besser "YYYYMMDD ...") ....
Nein geht nicht !
* Wird der Tag mit oder ohne führende Null geschrieben ("Wed Sep 05" oder "Wed Sep 5")?
[Wed Sep 05 10:11:51 2007] mit führender Null
* Steht Datum/Zeit tatsächlich zwischen "[" und "]"?
JA
* Könnte es sein, dass der String "Sep 12" auch in Zeilen auftaucht, die nicht gelöscht werden sollen?
JA
Mitglied: bastla
bastla 30.10.2007 um 17:02:47 Uhr
Goto Top
Hallo Franzmann!

Auf Deinem ursprünglichen Vorhaben basierend (die Einträge der ersten 5 Tage zu löschen), könnte ich folgenden Batch zum Testen anbieten:
@echo off & setlocal
set "Log=D:\Apache-TestLog.txt"  
set "Days=4"  

set "Src=%temp%\ALogTemp.txt"  
set "Dst=%temp%\ALog.txt"  
set "GFD=%temp%\GetFormattedDate.vbs"  
echo sM=",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec":aM=Split(sM,","):aW=Array("","Sun","Mon","Tue","Wed","Thu","Fri","Sat")>%GFD%  
echo iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If iM=0 Then WScript.Quit(1) Else iM=(iM+2)/4>>%GFD%
echo dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If Not IsDate(dtD) Then WScript.Quit(1)>>%GFD%
echo WScript.Echo aW(Weekday(dtD))^&" "^&aM(Month(dtD))^&" "^&Right("0"^&Day(dtD),2)>>%GFD%  
set /p FirstLine=<"%Log%"  
for /f "tokens=2,3,5 delims= " %%i in ('echo %FirstLine%') do set "Dat=%%i %%j %%k"  

copy "%Log%" "%Dst%">nul  
for /l %%d in (0,1,%Days%) do call :RemoveDeltaDayLogEntries %%d
move "%Dst%" "%Log%"  
goto :eof

:RemoveDeltaDayLogEntries
for /f "delims=" %%i in ('cscript //nologo %GFD% %1 %Dat%') do set "Filter=%%i"  
if not defined Filter goto :eof
echo Entferne Zeilen mit Datum: %Filter%
move "%Dst%" "%Src%"  
findstr /v /b "[%Filter%" "%Src%" > "%Dst%"  
Eigentlich müsstest Du nur die Pfadangabe zur Logdatei (bitte eine Kopie verwenden) in der ersten "set"-Zeile anpassen und danach den Batch starten, um alle Einträge mit dem ältesten Datum und den 4 (siehe zweite "set"-Zeile) darauf folgenden Tagen zu entfernen.

Voraussetzung ist dabei, dass bereits die erste Logdatei-Zeile (und natürlich alle weiteren) mit dem von Dir beschriebenen Datumsformat ([Wed Sep 12 10:11:51 2007]) beginnt (also keine Kopfzeile vorhanden ist), da aus dieser ersten Zeile das älteste Datum ermittelt wird.

Grüße
bastla

P.S.: Muss leider weg und bin erst am späteren Abend wieder zurück.
Mitglied: Franzmann
Franzmann 30.10.2007 um 17:26:10 Uhr
Goto Top
Hey,
vielen Dank, werds gleich morgen ausprobieren.
Muss jetzt auch weg...
So far, thx a lot :D
Mitglied: IRIXuser
IRIXuser 30.10.2007 um 18:46:52 Uhr
Goto Top
hallo,

wenn sed für windows erhältlich ist, dann kann man auch mit der suchmustererkennung die zeilen, welche man löschen möchte erkennen. mit hilfe von suchmustern und feldern sollte es klappen.
wir wissen, das ein blank zwischen dem zeitformat vorhanden ist also können wir auch den wochentag überlesen und an der stelle des datums beginnen.

z.B. kann man mit
! -> sed -n '1,20p' dateiname
die ersten 20 zeilen anzeigen lassen.
um eine zeile zu löschen die ein "muster" enthält. kann man schreiben
! -> sed '/muster/d' dateiname
nun müssen wir noch den wochentag überlesen und das "muster" mit hilfe von regulären ausdrücken ersetzen.
! -> sed '/* [aA-zZ] [01][0-9] [01]:[0-5]·[0-9]/d'

ich hoffe das ich mich noch recht erinnere....
ich versuche das mal zu erleutern.
  • irgendein zeichen egal welches, dann ein blank, dann um den wochentag zu überlesen alle buchstaben egal ob groß oder klein, dann wieder ein blank, dann den monatstag, dann das zeitformat.
um nun die gewünschten zeilen zu löschen, sollte man das format wählen, dass das intervall von - bis löscht.

ich bin nicht mehr ganz sicher, ist einfach zu lange her. aber so in der art haben wir das im studium gelernt.
man sed
gibt die genaue anleitung .
wie schon gesagt: ist für linux aber weiter oben hat jemand gesagt, dass es sed auch für windows gibt.
Mitglied: Biber
Biber 30.10.2007 um 20:27:29 Uhr
Goto Top
Hmmm, bei sowas mach ich gerne mit...

* Könntest (wolltest) Du das Format auf "YYYY-MM-DD ..." (oder noch besser "YYYYMMDD ...") ....

Nein geht nicht !

Klar geht das. Selbst unter Windows, da wette ich...

Laut meiner Recherche hier ist
The common log format is defined like this:

%h %l %u %t "%r" %>s %b

...mit %t als diese Standarddarstellung des Timestamps.
...und etwas tiefer steht...
Configurable Format Reference
Here are all the % sequences allowed in the configurable log format in Apache.

%b bytes sent, excluding HTTP headers
...
%t time, in common log format time format
%{format}t The time, in the form given by format, which should be in strftime format


was bedeuten könnte, mit einem (sinngemäß/ungetestet!) Befehl
LogFormat %{"%YY-%mm-%dd %HH:%MM:%SS")t {und der Rest der Zeile nach Belieben}  
-oder-
LogFormat %{"%YYYY%%mm%dd %HH:%MM:%SS")t  
...sollte das Leben und das Logfile einfacher werden.

Grüße
Biber
Mitglied: Franzmann
Franzmann 31.10.2007 um 07:47:21 Uhr
Goto Top
Hallo Franzmann!

Auf Deinem ursprünglichen Vorhaben
basierend (die Einträge der ersten 5
Tage zu löschen), könnte ich
folgenden Batch zum Testen anbieten:
@echo off & setlocal
> set "Log=D:\Apache-TestLog.txt"  
> set "Days=4"  
> 
> set "Src=%temp%\ALogTemp.txt"  
> set "Dst=%temp%\ALog.txt"  
> set
> "GFD=%temp%\GetFormattedDate.vbs"  
> echo
> sM=",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec":aM=Split(sM,","):aW=Array("","Sun","Mon","Tue","Wed","Thu","Fri","Sat")>%GFD%  
> echo
> iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If
> iM=0 Then WScript.Quit(1) Else
> iM=(iM+2)/4>>%GFD%
> echo
> dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If
> Not IsDate(dtD) Then
> WScript.Quit(1)>>%GFD%
> echo WScript.Echo
> aW(Weekday(dtD))^&"  
> "^&aM(Month(dtD))^&"  
> "^&Right("0"^&Day(dtD),2)>>%GFD%  
> set /p FirstLine=<"%Log%"  
> for /f "tokens=2,3,5 delims= "  
> %%i in ('echo %FirstLine%') do set  
> "Dat=%%i %%j %%k"  
> 
> copy "%Log%"  
> "%Dst%">nul  
> for /l %%d in (0,1,%Days%) do call
> :RemoveDeltaDayLogEntries %%d
> move "%Dst%" "%Log%"  
> goto :eof
> 
> :RemoveDeltaDayLogEntries
> for /f "delims=" %%i in  
> ('cscript //nologo %GFD% %1 %Dat%')  
> do set "Filter=%%i"  
> if not defined Filter goto :eof
> echo Entferne Zeilen mit Datum: %Filter%
> move "%Dst%" "%Src%"  
> findstr /v /b "[%Filter%"  
> "%Src%" > "%Dst%"  
> 
Eigentlich müsstest Du nur
die Pfadangabe zur Logdatei (bitte eine Kopie
verwenden) in der ersten
"set"-Zeile anpassen und danach den
Batch starten, um alle Einträge mit dem
ältesten Datum und den 4 (siehe zweite
"set"-Zeile) darauf folgenden Tagen
zu entfernen.

Voraussetzung ist dabei, dass bereits die
erste Logdatei-Zeile (und natürlich alle
weiteren) mit dem von Dir beschriebenen
Datumsformat ([Wed Sep 12 10:11:51 2007])
beginnt (also keine Kopfzeile vorhanden ist),
da aus dieser ersten Zeile das älteste
Datum ermittelt wird.

Grüße
bastla

Hab das gerade mal per Eingabeaufforderung ausprobiert.
Funktioniert leider nicht, bekommen die Meldung:
"configured" ist syntaktisch an dieser Stelle nicht verarbeitbar.
Mitglied: Franzmann
Franzmann 31.10.2007 um 09:33:05 Uhr
Goto Top
Hmmm, bei sowas mach ich gerne mit...

>> * Könntest (wolltest) Du das
Format auf "YYYY-MM-DD ..." (oder
noch besser "YYYYMMDD ...") ....
>
> Nein geht nicht !

Klar geht das. Selbst unter Windows, da
wette ich...

Laut meiner Recherche
[http://www.apacheweek.com/features/logfiles
hier] ist
The common log format is defined
like this:

%h %l %u %t "%r" %>s %b

...mit %t als diese Standarddarstellung des
Timestamps.
...und etwas tiefer steht...
Configurable Format Reference
Here are all the % sequences allowed in the
configurable log format in Apache.

%b bytes sent, excluding HTTP headers
...
%t time, in common log format time format

%{format}t The time, in the form given by
format, which should be in strftime format


was bedeuten könnte, mit einem
(sinngemäß/ungetestet!) Befehl
LogFormat %{"%YY-%mm-%dd  
> %HH:%MM:%SS")t {und der Rest der Zeile  
> nach Belieben}
> -oder-
> LogFormat %{"%YYYY%%mm%dd  
> %HH:%MM:%SS")t  
> 
...sollte das Leben und das Logfile
einfacher werden.

Grüße
Biber
@ Biber:
Wie müsste das dann in etwa aussehen ?
So ?

@echo off & setlocal
set "Summary=D:\error_summary.log"
set "Filter=/* [aA-zZ] [01][0-9] [01]:[0-5]·[0-9]/d"

if exist "%Summary%" del "%Summary%"
...
..
.
Mitglied: IT-MaD
IT-MaD 31.10.2007 um 10:37:27 Uhr
Goto Top
ich bin auch auf der Suche nach einer Lösung für dieses Problem ... bin dann hier auf diesen Beitrag gestossen ...

ich hatte das gestern Abend auch mal gestestet ... ich kriege eine ähnliche Fehlermeldung ... bei mir kann "DAV/2" syntaktisch nicht verarbeitet werden ... kann mir leider nur keinen Reim draus machen
Mitglied: bastla
bastla 31.10.2007 um 10:55:32 Uhr
Goto Top
Hallo Franzmann und IT-MaD!

Könntet Ihr bitte (zwischen ""-Tags) jeweils die ersten 10 Zeilen (auch anonymisiert - es geht nur um das Format) Eurer Logs posten?

Grüße
bastla
Mitglied: IT-MaD
IT-MaD 31.10.2007 um 11:01:25 Uhr
Goto Top
aber klar doch ... vielen Dank schon mal für die Hilfe ...

[Thu Sep 20 21:50:22 2007] [notice] Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.3 configured -- resuming normal operations
[Thu Sep 20 21:50:22 2007] [notice] Server built: Mar  5 2007 11:23:00
[Thu Sep 20 21:50:22 2007] [notice] Parent: Created child process 2720
[Thu Sep 20 21:50:24 2007] [notice] Child 2720: Child process is running
[Thu Sep 20 21:50:24 2007] [notice] Child 2720: Acquired the start mutex.
[Thu Sep 20 21:50:24 2007] [notice] Child 2720: Starting 250 worker threads.
[Thu Sep 20 21:50:24 2007] [notice] Child 2720: Starting thread to listen on port 443.
[Thu Sep 20 21:50:24 2007] [notice] Child 2720: Starting thread to listen on port 80.
[Fri Sep 21 06:32:18 2007] [notice] Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.3 configured -- resuming normal operations
[Fri Sep 21 06:32:18 2007] [notice] Server built: Mar  5 2007 11:23:00
[Fri Sep 21 06:32:18 2007] [notice] Parent: Created child process 1880
[Fri Sep 21 06:32:19 2007] [notice] Child 1880: Child process is running
[Fri Sep 21 06:32:19 2007] [notice] Child 1880: Acquired the start mutex.
[Fri Sep 21 06:32:19 2007] [notice] Child 1880: Starting 250 worker threads.
[Fri Sep 21 06:32:19 2007] [notice] Child 1880: Starting thread to listen on port 80.
[Fri Sep 21 06:32:19 2007] [notice] Child 1880: Starting thread to listen on port 443.
[Fri Sep 21 17:54:13 2007] [notice] Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.3 configured -- resuming normal operations
[Fri Sep 21 17:54:13 2007] [notice] Server built: Mar  5 2007 11:23:00
[Fri Sep 21 17:54:13 2007] [notice] Parent: Created child process 2056
[Fri Sep 21 17:54:14 2007] [notice] Child 2056: Child process is running
[Fri Sep 21 17:54:14 2007] [notice] Child 2056: Acquired the start mutex.
[Fri Sep 21 17:54:14 2007] [notice] Child 2056: Starting 250 worker threads.
[Fri Sep 21 17:54:14 2007] [notice] Child 2056: Starting thread to listen on port 443.
[Fri Sep 21 17:54:14 2007] [notice] Child 2056: Starting thread to listen on port 80.
Mitglied: Franzmann
Franzmann 31.10.2007 um 11:05:37 Uhr
Goto Top
[Wed Sep 12 10:11:51 2006] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations
[Wed Sep 12 10:11:51 2006] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations
[Wed Sep 12 10:11:51 2006] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations
[Wed Sep 12 10:11:51 2006] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations
[Wed Sep 12 10:11:51 2007] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations
[Wed Sep 12 10:11:51 2007] [notice] Apache/2.2.4 (Win32) configured -- resuming normal operations
[Wed Sep 12 10:11:51 2007] [notice] Server built: Jan  9 2007 23:17:20
[Wed Sep 12 10:11:51 2007] [notice] Parent: Created child process 880
[Wed Sep 12 10:11:51 2007] [notice] Child 880: Child process is running
[Wed Sep 12 10:11:51 2007] [notice] Child 880: Acquired the start mutex.
Danke !!
Mitglied: bastla
bastla 31.10.2007 um 11:30:09 Uhr
Goto Top
Hallo!

Neuer Versuch:
@echo off & setlocal
set "Log=D:\Apache-TestLog.txt"  
set /a Days=5

set "Src=%temp%\ALogTemp.txt"  
set "Dst=%temp%\ALog.txt"  
set "GFD=%temp%\GetFormattedDate.vbs"  
echo sM=",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec":aM=Split(sM,","):aW=Array("","Sun","Mon","Tue","Wed","Thu","Fri","Sat")>%GFD%  
echo iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If iM=0 Then WScript.Quit(1) Else iM=(iM+2)/4>>%GFD%
echo dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If Not IsDate(dtD) Then WScript.Quit(1)>>%GFD%
echo WScript.Echo aW(Weekday(dtD))^&" "^&aM(Month(dtD))^&" "^&Right("0"^&Day(dtD),2)>>%GFD%  
set /p FirstLine=<%Log%
set FirstLine=%FirstLine:~0,26%
for /f "tokens=2,3,5 delims= " %%i in ('echo %FirstLine%') do set "Dat=%%i %%j %%k"  
set /a Days-=1

copy "%Log%" "%Dst%">nul  
for /l %%d in (0,1,%Days%) do call :RemoveDeltaDayLogEntries %%d
move "%Dst%" "%Log%"  
goto :eof

:RemoveDeltaDayLogEntries
for /f "delims=" %%i in ('cscript //nologo %GFD% %1 %Dat%') do set "Filter=%%i"  
if not defined Filter goto :eof
echo Entferne Zeilen mit Datum: %Filter%
move "%Dst%" "%Src%"  
findstr /v /b "[%Filter%" "%Src%" > "%Dst%"  

Neben einer Korrektur/Ergänzung gibt es noch eine Änderung: Die in der Zeile "set /p Days=5" angegebene Tageanzahl muss nicht (wie in der ersten Version) um 1 vermindert sein, sondern entspricht jetzt der Anzahl der zu löschenden Tage (also im Beispiel: 5).

Grüße
bastla
Mitglied: Franzmann
Franzmann 31.10.2007 um 11:51:06 Uhr
Goto Top
Also lokal auf meinem Rechner funktioniert es super.
Wenn ich es auf meinen Windows2003 Server ausprobiere, bekomme ich folgende Meldung:
echo ist off
ECHO ist ausgeschaltet (OFF).
Der Befehl "sM" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.
iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If iM=0 Then WScript.Quit(1) Else
Der Befehl "iM" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If Not IsDate(dtD) Then
Der Befehl "WScript.Quit" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  

C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  

C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  

C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  

C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  

        1 Datei(en) verschoben.
Bei echo ist on
D:\Programme\httpd1\logs>test.bat

D:\Programme\httpd1\logs>set "Log=D:\Programme\httpd1\logs\test.log"  

D:\Programme\httpd1\logs>set /a Days=5

D:\Programme\httpd1\logs>set "Src=C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\ALogTemp.txt"  

D:\Programme\httpd1\logs>set "Dst=C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\ALog.txt"  

D:\Programme\httpd1\logs>set "GFD=C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs"  

D:\Programme\httpd1\logs>echo
ECHO ist eingeschaltet (ON).

D:\Programme\httpd1\logs>sM=",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec":aM=Split(sM,","):aW=Array("","Sun","Mon","Tue","Wed","Thu","  
Der Befehl "sM" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.

D:\Programme\httpd1\logs>Fri","Sat")>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs  
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

D:\Programme\httpd1\logs>echo iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If iM=0 Then WScript.Quit(1) Else
iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If iM=0 Then WScript.Quit(1) Else

D:\Programme\httpd1\logs>iM=(iM+2)/4 1>>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs
Der Befehl "iM" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.

D:\Programme\httpd1\logs>echo dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If Not IsDate(dtD) Then
dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If Not IsDate(dtD) Then

D:\Programme\httpd1\logs>WScript.Quit(1) 1>>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs
Der Befehl "WScript.Quit" ist entweder falsch geschrieben oder  
konnte nicht gefunden werden.

D:\Programme\httpd1\logs>echo WScript.Echo aW(Weekday(dtD))&" "&aM(Month(dtD))&" "&Right("0"&Day(dtD),2) 1>>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormat  

D:\Programme\httpd1\logs>set /p FirstLine= 0<D:\Programme\httpd1\logs\test.log

D:\Programme\httpd1\logs>set FirstLine=[Fri Aug 17 09:01:33 2007]

D:\Programme\httpd1\logs>for /F "tokens=2,3,5 delims= " %i in ('echo [Fri Aug 17 09:01:33 2007]') do set "Dat=%i %j %k"  

D:\Programme\httpd1\logs>set "Dat=Aug 17 2007"  

D:\Programme\httpd1\logs>set /a Days-=1

D:\Programme\httpd1\logs>copy "D:\Programme\httpd1\logs\test.log" "C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\ALog.txt" 1>nul  

D:\Programme\httpd1\logs>for /L %d in (0 1 4) do call :RemoveDeltaDayLogEntries %d

D:\Programme\httpd1\logs>call :RemoveDeltaDayLogEntries 0

D:\Programme\httpd1\logs>for /F "delims=" %i in ('cscript //nologo C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs 0 Aug 17 2007') do set "Filte  
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  


D:\Programme\httpd1\logs>if not defined Filter goto :eof

D:\Programme\httpd1\logs>call :RemoveDeltaDayLogEntries 1

D:\Programme\httpd1\logs>for /F "delims=" %i in ('cscript //nologo C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs 1 Aug 17 2007') do set "Filte  
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  


D:\Programme\httpd1\logs>if not defined Filter goto :eof

D:\Programme\httpd1\logs>call :RemoveDeltaDayLogEntries 2

D:\Programme\httpd1\logs>for /F "delims=" %i in ('cscript //nologo C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs 2 Aug 17 2007') do set "Filte  
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  


D:\Programme\httpd1\logs>if not defined Filter goto :eof

D:\Programme\httpd1\logs>call :RemoveDeltaDayLogEntries 3

D:\Programme\httpd1\logs>for /F "delims=" %i in ('cscript //nologo C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs 3 Aug 17 2007') do set "Filte  
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  


D:\Programme\httpd1\logs>if not defined Filter goto :eof

D:\Programme\httpd1\logs>call :RemoveDeltaDayLogEntries 4

D:\Programme\httpd1\logs>for /F "delims=" %i in ('cscript //nologo C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs 4 Aug 17 2007') do set "Filte  
C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\GetFormattedDate.vbs(1, 1) Laufzeitfehler in Microsoft VBScript: Typen unverträglich: 'aW'  


D:\Programme\httpd1\logs>if not defined Filter goto :eof

D:\Programme\httpd1\logs>move "C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\2\ALog.txt" "D:\Programme\httpd1\logs\test.log"  
        1 Datei(en) verschoben.

D:\Programme\httpd1\logs>goto :eof

Hat das überhaupt mit dem ECHO zu tun ?
Mitglied: IT-MaD
IT-MaD 31.10.2007 um 11:51:09 Uhr
Goto Top
super ... vielen Dank ... so scheint es wirklich zu funktionieren ... aber ich teste nochmal ein wenig rum
Mitglied: bastla
bastla 31.10.2007 um 12:05:27 Uhr
Goto Top
Hallo Franzmann!

Du scheinst überzählige Zeilenumbrüche (zB in der Zeile "echo sM=",Jan,Feb ...." gleich nach dem "echo") in der Datei zu haben ...

Vielleicht kurz zur Funktionsweise: die "echo"-Zeilen ab der oben Beschriebenen bis zu "echo WScript.Echo aW(Weekday ..." erstellen ein VBScript (die Berechnung/Formatierung der Datumsangaben inkl der Wochentage lässt sich so einfacher realisieren als in Batch) in "%temp%\GetFormattedDate.vbs", daher müssen die jeweiligen Zeilen (ohne Umbrüche) intakt bleiben.

Ein "echo on" schadet dabei allerdings nicht ...

Grüße
bastla
Mitglied: Franzmann
Franzmann 31.10.2007 um 12:10:50 Uhr
Goto Top
Hallo Franzmann!

Du scheinst überzählige
Zeilenumbrüche (zB in der Zeile
"echo sM=",Jan,Feb ...."
gleich nach dem "echo") in der
Datei zu haben ...

Ja, womit du das Problem gefixt hast ;)
Es läuft ! Super vielen Dank.
Die Logfile ist gleich viel kleiner geworden.
Von ca. 300MB auf ca.1MB face-smile
Mitglied: IRIXuser
IRIXuser 31.10.2007 um 16:39:21 Uhr
Goto Top
hallo,

ich bin sehr froh das es bei euch funkt.
würde das gern für ein windowssystem mit apache übernehmen. aber irgendwie habe ich den anschluss verloren.

wie habt ihr das format geändert, so dass am anfang einer zeile [Wed Sep 12 10:11:51 2006] steht.

ich habe versucht die config zu ändern, aber dann startet apache nicht mehr [lol]!

ist die zeile so richtig?
%{"%YYYY%%mm%dd%HH:%MM:%SS"}t

bei mir steht:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

kann mir einer von euch bitte mal die editierte zeilen zeigen???

thx
patric
Mitglied: IT-MaD
IT-MaD 31.10.2007 um 17:13:50 Uhr
Goto Top
also ich habe nix an dem Format geändert ... und soweit ich weiß Franzmann auch nicht und da bin ich mir eigentlich sicher ...
Mitglied: bastla
bastla 31.10.2007 um 17:23:46 Uhr
Goto Top
Hallo IRIXuser!

Wie sieht denn bei Dir eine Zeile der Logdatei aus?

Grüße
bastla
Mitglied: IRIXuser
IRIXuser 31.10.2007 um 17:34:03 Uhr
Goto Top
hier ist die ausgabe meiner datei:

C:\Dokumente und Einstellungen\Administrator\Desktop>set "Log=E:\access.log"

C:\Dokumente und Einstellungen\Administrator\Desktop>set "Days=6"

C:\Dokumente und Einstellungen\Administrator\Desktop>set "Src=C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\ALogTemp.txt"

C:\Dokumente und Einstellungen\Administrator\Desktop>set "Dst=C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\ALog.txt"

C:\Dokumente und Einstellungen\Administrator\Desktop>set "GFD=C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\GetFormattedDate.vbs"

C:\Dokumente und Einstellungen\Administrator\Desktop>echo sM=",Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec":aM=Split(sM,","):aW=Array("","Sun","Mon","Tue","Wed","Thu","Fri","Sat") 1>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\GetFormattedDate.vbs

C:\Dokumente und Einstellungen\Administrator\Desktop>echo iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(1)):If iM=0 Then WScript.Quit(1) Else iM=(iM+2)/4 1>>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\GetFormattedDate.vbs

C:\Dokumente und Einstellungen\Administrator\Desktop>echo dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(2)-iDDiff):If Not IsDate(dtD) Then WScript.Quit(1) 1>>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\GetFormattedDate.vbs

C:\Dokumente und Einstellungen\Administrator\Desktop>echo WScript.Echo aW(Weekday(dtD))&" "&aM(Month(dtD))&" "&Right("0"&Day(dtD),2) 1>>C:\DOKUME~1\ADMINI~1\LOKALE~1\Temp\GetFormattedDate.vbs

C:\Dokumente und Einstellungen\Administrator\Desktop>set /p FirstLine= 0<"E:\access.log"

C:\Dokumente und Einstellungen\Administrator\Desktop>for /f "tokens=2,3,5 delims= " %i in ('echo [Thu Sep 20 21:50:22 2007] [notice] Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.3 configured -- resuming normal operations') do set "Dat=%i %j %k"


ich bekomme keine fehlermeldung aber die access.log wird nicht kleiner....
Mitglied: bastla
bastla 31.10.2007, aktualisiert am 18.10.2012 um 18:32:39 Uhr
Goto Top
Hallo IRIXuser!

Soferne ich das richtig sehe, verwendest Du aber nicht die um 11:30:09 Uhr gepostete Version?

Grüße
bastla
Mitglied: IRIXuser
IRIXuser 01.11.2007 um 06:58:47 Uhr
Goto Top
hi,
ja du hast recht. ich hatte wohl die falsche version benutzt.
jetzt habe ich mir das mal genau angesehen und ich habe einige fragen zu dem script.

in der ersten echo zeile die variablen sM und aW .

ich benutze apache 2 und bei mir steht im ersten feld nicht [Wed... sondern [10....
für den Monat. also ein numerischer eintrag.
hier ein auszug der ersten zeile meines logfiles

[31/Okt/2007:18:04:41 +0100] - username IP ...........

ich habe die seite, welche du gelinkt hast gelesen (apacheweek) und danach meinen
%t eintrag nach vorn geholt. aber ich habe das gefühl das es so nicht mit deinem script übereinstimmt. mein script heisst clear.bat und wenn ich clear.bat > out.out umleite und mir das anschaue, sieht es ganz gut aus. keine fehler. aber die datei ist immer noch so wie zuvor.
wie muss ich das script von dir anpassen??? evtl in GetFormattedDate.vbs ???

dann habe ich nochmal eine allgemeine frage zu dem script.
du rufst in einer for schleife :RemoveDeltaDayLogEntries auf.
und weiter unten steht wieder :RemoveDeltaDayLogEntries
ist das eine funktion, die du dort aufrufst?
mir kommt das so ein bisschen C ähnlich vor (abgesehen von der syntax)

patric
Mitglied: bastla
bastla 01.11.2007 um 10:17:59 Uhr
Goto Top
Hallo IRIXuser!

Du kannst das Format für die Datumsangabe unverändert lassen - ich habe das Script entsprechend angepasst an
[31/Okt/2007:18:04:41 +0100] - username IP ...........
Sollte tatsächlich, wie Du vorher schreibst, das Datum mit dem Monat, also 10, beginnen, müsstest Du eine Logzeile in diesem Format posten.
@echo off & setlocal
set "Log=E:\access.log"  
set /a Days=7

set "Src=%temp%\ALogTemp.txt"  
set "Dst=%temp%\ALog.txt"  
set "GFD=%temp%\GetFormattedDate.vbs"  
echo sM=",Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez":aM=Split(sM,",")>%GFD%  
echo iDDiff=-WScript.Arguments(0):iM=InStr(sM,WScript.Arguments(2)):If iM=0 Then WScript.Quit(1) Else iM=(iM+2)/4>>%GFD%
echo dtD=DateSerial(WScript.Arguments(3),iM,WScript.Arguments(1)-iDDiff):If Not IsDate(dtD) Then WScript.Quit(1)>>%GFD%
echo WScript.Echo Right("0"^&Day(dtD),2)^&"/"^&aM(Month(dtD))^&"/"^&Year(dtD)>>%GFD%  
set /p FirstLine=<%Log%
set FirstLine=%FirstLine:~1,11%
for /f "tokens=1-3 delims=/" %%i in ('echo %FirstLine%') do set "Dat=%%i %%j %%k"  
set /a Days-=1

copy "%Log%" "%Dst%">nul  
for /l %%d in (0,1,%Days%) do call :RemoveDeltaDayLogEntries %%d
move "%Dst%" "%Log%"  
goto :eof

:RemoveDeltaDayLogEntries
for /f "delims=" %%i in ('cscript //nologo %GFD% %1 %Dat%') do set "Filter=%%i"  
if not defined Filter goto :eof
echo Entferne Zeilen mit Datum: %Filter%
move "%Dst%" "%Src%"  
findstr /v /b "[%Filter%" "%Src%" > "%Dst%"  

du rufst in einer for schleife :RemoveDeltaDayLogEntries auf.
und weiter unten steht wieder :RemoveDeltaDayLogEntries
ist das eine funktion, die du dort aufrufst?
Eigentlich eine Prozedur (Unterprogramm) - der Aufruf erfolgt aus einer Zählschleife (von 0 bis Days-1), welche die Tagesdifferenz zum in der ersten Zeile gefundenen Datum (Basisdatum) übergibt.

In der aufgerufenen Prozedur wird diese Differenz samt dem Basisdatum dem oben erstellten VBScript übergeben, welches als Rückgabewert einen formatierten Datumsstring für (Basisdatum + %%d Tage) liefert.

Dieser String wird letztlich als Suchkriterium für die zu löschenden (genauer: auszufilternden, daher "findstr /v") Zeilen verwendet (Zeile muss mit [Datumsstring beginnen - daher "findstr /b").

Gelöscht wird also jeweils nur ein Tag, daher die Verwendung der beiden temporären Dateien %Src% und %Dst% zum Zwischenspeichern des gekürzten Logs (und das "move" des vorigen Ergebnisses %Dst% in die neue Ausgangsdatei %Src%).

ich habe die seite, welche du gelinkt hast gelesen (apacheweek) ...
Damit Du mich nicht mit fremden Federn schmückst: Den Link hat Biber gefunden ...

Die Idee, die wir tatsächlich beide hatten: Eine rein numerische Datumsschreibweise "YYYYMMDD" ließe sich in Batch leichter weiter verarbeiten, als dies mit der Variante "Monat als Abkürzung" oder (eigentlich noch schlimmer) "vorangestelltem abgekürzten Wochentag" möglich ist - deswegen auch die Verwendung des VBScripts.

Grüße
bastla
Mitglied: IRIXuser
IRIXuser 01.11.2007 um 15:17:57 Uhr
Goto Top
hi bastla,
super ding! jetzt wird das format erkannt. ganz schön abstrakt die sprache.
irgendwie ist mir shell scripting lieber...

dann noch mal vielen dank für deine mühe...

gruß
Patric
Mitglied: bastla
bastla 01.11.2007 um 16:36:24 Uhr
Goto Top
Hallo IRIXuser!

ganz schön abstrakt die sprache.
Sieht schlimmer aus, als es wirklich ist - speziell das VBScript habe ich halt stark "eingedampft" ...

Vielleicht wird das Script so etwas leichter zu durchschauen:
sM = ",Jan,Feb,Mär,Apr,Mai,Jun,Jul,Aug,Sep,Okt,Nov,Dez" 'verwendete Monatsnamen  
'Aufteilung der Namen (in ein Array; eigentlich nullbasiert,  
'    aber durch das erste Komma oben stimmen Name und Monatszahl überein)  
aM = Split(sM, ",")  

'Erstes übergebenes Argument (ebenfalls nullbasiert) ist die Tagedifferenz   
'    (das "-" ist syntaktisch bedingt - siehe unten)  
iDDiff = -WScript.Arguments(0)

'Monatsnummer als Integer ermitteln - Schritt 1: Position im String sM feststellen  
iM = InStr(sM, WScript.Arguments(2))
If iM = 0 Then 'Monatsname gefunden?  
	'Nein, daher Ende (mit Errorlevel 1 - wird zwar nicht weiter verwendet,  
	'    schadet aber auch nicht)  
	WScript.Quit(1)
Else
	'Monatsnummer als Integer ermitteln - Schritt 2: aus Position im String Monatszahl ermitteln  
	iM = (iM + 2) / 4
End If

'Datum aus iM und den weiteren Argumenten zusammenstellen - Jahr, Monat, Tag;  
'    dabei auch gleich Tagedifferenz berücksichtigen -   
'    hier wird ein negativer Wert benötigt, daher oben der Vorzeichenwechsel  
dtD = DateSerial(WScript.Arguments(3), iM, WScript.Arguments(1)- iDDiff)

 'Falls kein gültiges Datum entstanden ist, mit Fehler beenden  
If Not IsDate(dtD) Then WScript.Quit(1)

'Datum formatiert ausgeben: Tag mit führender 0, Monat als Text  
WScript.Echo _
	Right("0" & Day(dtD), 2) & "/" & _  
	aM(Month(dtD)) & "/" & _  
	Year(dtD)
Ein Auge solltest Du noch auf die Monatsnamen haben (zB ob "Jan" - in der jetzigen Version - oder "Jän"); das kannst Du dann gegebenen Falls aber sicher auch in der "Kurzfassung" face-wink oben selbst anpassen ...

Grüße
bastla
Mitglied: Biber
Biber 01.11.2007 um 19:00:30 Uhr
Goto Top
Hmmm,

das Thema "eigenes LogFile-Format setzen" ist irgendwie noch nicht durch für mich...

Muss ja nicht sein, dass ein begnadeter bastla für jedes irgendwo scheinbar zufällig vom Himmel fallende Logfile-Datumsformat eine eigene kleine Routine schreibt.
Auch wenn er im Routinen schreiben durchaus routiniert ist.

Deshalb noch mal zu der meiner oben zusammenphantasierten NICHT funktionierenden Behauptung:
....was bedeuten könnte, mit einem (sinngemäß/ungetestet!) Befehl
LogFormat %{"%YY-%mm-%dd %HH:%MM:%SS")t {und der Rest der Zeile nach Belieben}
-oder-
LogFormat %{"%YYYY%%mm%dd %HH:%MM:%SS")t

---> nicht ganz, vermutlich ist die Syntax eher so, dass mit...
Logformat "%{%Y%m%d %H:%M %S}t [...weitere definierte %-Vars..] " NameDesLogformats  
...so eine Logzeile definiert wird.

@IRIXuser
Deshalb wäre für das Verstehen der Syntax der Logformat-Direktive ganz interessant, was bei Dir in der httpd.conf drinsteht an "Logformat"-Zeilen.
Denn Dein Datumsformat unterscheidet sich ja schon von Franzmanns....

Grüße
Biber


Deshalb
Mitglied: IRIXuser
IRIXuser 02.11.2007 um 10:39:30 Uhr
Goto Top
hallo,

@bastla
danke für die erleuterung des scripts, es ist jetzt nicht mehr so abstrakt wie zuvor.
und - was ich gestern schon erwähnen wollte, schmücken wollte ich niemanden' wollte nur andeuten, dass ich mich mit der thematik auseinander gesetzt habe, was auch dazu führte, dass ich jetzt an Biber schreiben kann:

@Biber
auf der seite apacheweek (common format) habe ich gesehen, dass die fomatierung in der form
%h %l %u %t "%r" %>s %b
in der config steht. um meine datei nun anzupassen, habe ich einfach das %t nach vorn gezogen
und meine zeile in der config sieht nun so aus:
LogFormat "%t %l %u %h \"%r\" %>s %b" common
mehr nicht!

die von euch vorgeschlagene formatierung :
Logformat "%{%Y%m%d %H:%M %S}t [...weitere definierte %-Vars..] " NameDesLogformats
habe ich nicht benutzt.

der grund warum sich die formatierung zu der config von franzmann unterscheidet, kann ich nur damit erklären, dass sich evtl. die version von apache unterscheidet.
ich benutze den apachen 2.2.4 .

da ich windows nur für CAD und Flash benutze, und zufällig gerade einen webserver auf windows aufgesetzt hatte, war ich schon interessiert, wie sich das thema mit dem logfile entwickelt.
aber es macht spass mit leuten wie euch "erfahrungen" auszutauschen.....

schade das der beitrag nun zum ende kommt....


grüße aus hannover
patric
Mitglied: Franzmann
Franzmann 02.11.2007 um 19:58:05 Uhr
Goto Top
aber es macht spass mit leuten wie euch
"erfahrungen" auszutauschen.....
Absolut. Danke nochmal an alle die diesen Thread zu so einem erfolgreichen Ende gebracht haben.

schade das der beitrag nun zum ende
kommt....
Naja es gibt schlimmeres :D