You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Reindl Harald <h....@thelounge.net> on 2011/10/08 12:30:22 UTC

BufferedLogs / Rotate

Hi

http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#bufferedlogs

is it safe to call "apachectl graceful" for make sure that all buffered
logs are written? we are using webalizer every night at 0:00 and on
the beginning of each month we do a "> access_log" directly after it

the problem with BufferedLogs is here that it can happen that after reset
the logfile some entries are written with the last day what means
that the next day webaliler calculates one or a handful of visits
for the past mobth and the real values are lost

on the other hand - "apachectl restart" would also be reasonable
since this is only a topic once per month and automated

-- 

Reindl Harald
the lounge interactive design GmbH
A-1060 Vienna, Hofmühlgasse 17
CTO / software-development / cms-solutions
p: +43 (1) 595 3999 33, m: +43 (676) 40 221 40
icq: 154546673, http://www.thelounge.net/

http://www.thelounge.net/signature.asc.what.htm


AW: BufferedLogs / Rotate

Posted by Martin Allert <al...@arago.de>.
Hallo Harald,

Darf ich das kurz zusammenfassen, was Du tun möchtest, um Dir einen Vorschlag zu unterbreiten:

- Du rotierst keine Logs, der Logfilename bleibt immer gleich.
- Nach Auswertung der Logs willst Du das Logfile durch "> filename" entleeren.
- apache soll dann weiterloggen, aber die alten Einträge, die er noch im Speicher hat, verwerfen.

Ich hätte da zwei Möglichkeiten, eine schöne, eine dreckige:

a) Move and rotate
- bewege das offene File und nenne es um
- Das Filehandle bleibt dabei offen.
- schicke dem apache ein graceful, er sollte dann ein neues Logfile mit dem konfigurierten Namen anlegen.
- Werte das umbenannte Logfile aus und lösche es hinterher.

b) logrotate einsetzen
Du kannst mit der Software Cronolog als Dateinamen einen Pipehandler für das Logfileschreiben einsetzen. Dabei können im Dateinamen strftime() Parameter, die du von date her kennst verwendet werden. Du kannst auch dabei einen Symlink/hardlink anlegen lassen. Deine Auswertesoftware wertet also das Logfile aus und Cronolog rotiert das Log automatisch auf die nächste Version, je nachdem wie Du den Dateinamen wählst. Danach kannst Du das alte Logfile löschen, denn Deine Auswertungssoftware geht ja immer auf den symlink los.

Viele Grüße,

Martin Allert

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: BufferedLogs / Rotate

Posted by Reindl Harald <h....@thelounge.net>.
Der Apache hat ja kein Problem das zu patchen wäre

Ich wollte einfach sichergehen dass "graceful" der beste Weg ist
alle Log-Puffer zurückzuschreiben oder ob jemand eine sauberere
Lösung kennt (kill mit was auch immer welchem Signal)

Am 10.10.2011 10:10, schrieb Mario Brandt:
> Moin,
> ich habe dazu ein patch gefunden.
> 
> https://issues.apache.org/bugzilla/show_bug.cgi?id=50861
> 
> Gruß
> Mario
> 
> 2011/10/9 Reindl Harald <h....@thelounge.net>:
>>
>>
>> Am 09.10.2011 16:47, schrieb Mario Brandt:
>>> Hallo Reindl,
>>> dies ist eine deutsche mailing liste ;-)
>>>
>>> Aber zurück zu deiner Frage: Ja, Du kannst auch graceful benutzen. Ich
>>> benutze jedoch mod_log_rotate[1]. Damit muss der server gar nicht duch
>>> gestartet werden
>>
>> es geht nicht um das rotieren, die sollen nicht rotieren sondern
>> schlicht und ergreifend in der gleichen sekunde in der der webalizer
>> fertig ist mit "> logfile" zurückgesetzt werden und zwar exakt am
>> 1. und pro logfle exakt nachdem das verarbeitet wurde, das kann
>> "mod_log_rotate" nicht leisten weil es vom shell-skript nichts
>> weiss
>>
>> das problem ist "BufferedLogs"
>>
>> wenn du um 00:02 ein logfile fertig verarbeitet hast und es zurücksetzt
>> kann es einfach sein dass der webserver noch ein paar zeilen hinten nach
>> spuckt womit am nächsten tag die statistik des vormonats zerstört wird
>>
>> der server soll also das ganze monat tagaus/tagein brav puffern anstatt
>> permanent disk-io zu erzeugen aber am monatsbeginn kurz vor den hunderten
>> webalizer-calls auf die einzelnen vcalls seine puffer zuverlässig
>> zurückschreiben
>>
>>
> 
> --------------------------------------------------------------------------
>                 Apache HTTP Server Mailing List "users-de" 
>       unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
>            sonstige Anfragen an users-de-help@httpd.apache.org
> --------------------------------------------------------------------------
> 

-- 

Mit besten Grüßen, Reindl Harald
the lounge interactive design GmbH
A-1060 Vienna, Hofmühlgasse 17
CTO / software-development / cms-solutions
p: +43 (1) 595 3999 33, m: +43 (676) 40 221 40
icq: 154546673, http://www.thelounge.net/

http://www.thelounge.net/signature.asc.what.htm


Re: BufferedLogs / Rotate

Posted by Mario Brandt <jb...@gmail.com>.
Moin,
ich habe dazu ein patch gefunden.

https://issues.apache.org/bugzilla/show_bug.cgi?id=50861

Gruß
Mario

2011/10/9 Reindl Harald <h....@thelounge.net>:
>
>
> Am 09.10.2011 16:47, schrieb Mario Brandt:
>> Hallo Reindl,
>> dies ist eine deutsche mailing liste ;-)
>>
>> Aber zurück zu deiner Frage: Ja, Du kannst auch graceful benutzen. Ich
>> benutze jedoch mod_log_rotate[1]. Damit muss der server gar nicht duch
>> gestartet werden
>
> es geht nicht um das rotieren, die sollen nicht rotieren sondern
> schlicht und ergreifend in der gleichen sekunde in der der webalizer
> fertig ist mit "> logfile" zurückgesetzt werden und zwar exakt am
> 1. und pro logfle exakt nachdem das verarbeitet wurde, das kann
> "mod_log_rotate" nicht leisten weil es vom shell-skript nichts
> weiss
>
> das problem ist "BufferedLogs"
>
> wenn du um 00:02 ein logfile fertig verarbeitet hast und es zurücksetzt
> kann es einfach sein dass der webserver noch ein paar zeilen hinten nach
> spuckt womit am nächsten tag die statistik des vormonats zerstört wird
>
> der server soll also das ganze monat tagaus/tagein brav puffern anstatt
> permanent disk-io zu erzeugen aber am monatsbeginn kurz vor den hunderten
> webalizer-calls auf die einzelnen vcalls seine puffer zuverlässig
> zurückschreiben
>
>

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: BufferedLogs / Rotate

Posted by Reindl Harald <h....@thelounge.net>.

Am 09.10.2011 16:47, schrieb Mario Brandt:
> Hallo Reindl,
> dies ist eine deutsche mailing liste ;-)
> 
> Aber zurück zu deiner Frage: Ja, Du kannst auch graceful benutzen. Ich
> benutze jedoch mod_log_rotate[1]. Damit muss der server gar nicht duch
> gestartet werden

es geht nicht um das rotieren, die sollen nicht rotieren sondern
schlicht und ergreifend in der gleichen sekunde in der der webalizer
fertig ist mit "> logfile" zurückgesetzt werden und zwar exakt am
1. und pro logfle exakt nachdem das verarbeitet wurde, das kann
"mod_log_rotate" nicht leisten weil es vom shell-skript nichts
weiss

das problem ist "BufferedLogs"

wenn du um 00:02 ein logfile fertig verarbeitet hast und es zurücksetzt
kann es einfach sein dass der webserver noch ein paar zeilen hinten nach
spuckt womit am nächsten tag die statistik des vormonats zerstört wird

der server soll also das ganze monat tagaus/tagein brav puffern anstatt
permanent disk-io zu erzeugen aber am monatsbeginn kurz vor den hunderten
webalizer-calls auf die einzelnen vcalls seine puffer zuverlässig
zurückschreiben


Re: BufferedLogs / Rotate

Posted by Mario Brandt <jb...@gmail.com>.
Hallo Reindl,
dies ist eine deutsche mailing liste ;-)

Aber zurück zu deiner Frage: Ja, Du kannst auch graceful benutzen. Ich
benutze jedoch mod_log_rotate[1]. Damit muss der server gar nicht duch
gestartet werden.

Gruß
Mario



[1] http://hexten.net/wiki/index.php/Mod-log-rotate

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------