Autor Zpráva
Pavla12
Profil *
Ahoj, pořídila jsem si virtuální server a jelikož mám jen základní znalost linuxů tak by jsem ráda vypnula ukládání logu z apache2
můžete prosím poradit? děkuji pěkně :)
juriad
Profil
Linuxák ti řekne, že vypínat logy je blbost. Log je první místo, kam by ses měla podívat, pokud stránky nefungují.
Nebo se snad bojíš, že budou příliš velké a budou „jen“ zabírat místo?
Pavla12
Profil *
správně... mám funkční script ale čas od času vypadne zdroj a hodí to 1-2 chyby
jenže v tak obrovském množství lidí ten jeden nevytvořený soubor udělá i 2-3 Gb errorů ... :(
Amunak
Profil
Pavla12:
Tak vyřešte tu chybu, ale nevypínejte logy. Navíc se dá obvykle nastavit, po jaké době se mají staré logy mazat a rotovat, myslím, že Apache to umí taky. Navíc, skutečně se vám stalo, že ten soubor tak narostl, nebo se jen bojíte, že by se to mohlo stát?

Pokud chybu chápu dobře, tak vznikne, když vypadne nějaký zdroj, z něhož se tahají data. To se dá obvykle snadno ošetřit přímo [v PHP]. Navíc takový access log by podle téhle teorie měl zabírat mnohonásobně víc místa, a to se očividně neděje.
Pavla12
Profil *
jde řádově o 2-3000 online lidí - cron vytváří data která tahá z jiného serveru...
vlastně se vytváří něco jako proxy... ale čas od času se prostě se serverem nespojí nebo se nevytvoří soubor ale do mysql se zapíše, že vytvořen byl... jde řádově o 2-3 soubory za den ale jelikož se tahají data ve smyčce tak 1 uživatel vytvoří tak 100 chyb do erroru...

jelikož server nebude fungovat na nic jiného nevidím problém v tom zamezit ukládání logů, když bude nějaký problém, vždy mohu logy zapnout a zjistit o co jde ne?

uživatelé takovýto výpadek nezaznamenají ale v logu jsem s tím na předchozím serveru měla velký problém...
Amunak
Profil
Pavla12:
ale čas od času se prostě se serverem nespojí nebo se nevytvoří soubor ale do mysql se zapíše, že vytvořen byl...
Takže očividně ani teď nevíte, co tu chybu způsobuje. Odstraňte její příčinu, nebo ošetřete případy, kdy nastává. Tohle je přesně ten špatný přístup. Copak nevadí, že se někde zapíše, že něco bylo vytvořeno, přestože to vytvořeno nebylo? Jaký je problém v tom ověřit, jeslti se tedy ten soubor skutečně vytvořil, nebo jestli se to s tím serverem spojilo? Když se to dostane do logů, tak se to dá detekovat a tedy taky ošetřit. Chybový log je právě od toho, aby se tam zaznamenaly chyby a někdo je pak opravil. Ne od toho, aby byl zaplevelený jednou chybou, kterou je někdo líný opravit, a řešil to tak, že zakáže celý log.

když bude nějaký problém, vždy mohu logy zapnout a zjistit o co jde ne?
Když nastane nějaký vzácnější anebo špatně reprodukovatelný problém, může být každá řádka co chybí v logu drahá.
Pavla12
Profil *
momentálě na to není čas a tak složitý script není na chvilku...
celý script se plánuje předělat ale než tak bude ráda by jsem aby server jel bez zahlcení disku... :(
Jan Tvrdík
Profil
Pavla12:
Než vypínat logy serveru, to radši zavolat error_reporting(0), nicméně Amunak má pravdu, že správné řešení je chybu odstranit. Pro programátora je vytvoření hotfixu práce tak na 10 minut.
Pavla12
Profil *
dobrá, slubuji... že se na to podívám :D
ale prozatím... jak vypnu ukládání logů z apache2? :D
Jan Tvrdík
Profil
Pavla12:
Jsi si jistá, že ta chyba je v logu Apache a ne v logu PHPka?
Pavla12
Profil *
na starém serveru se to ukládalo do /var/log/apache2
tak nějak ano... :D pokud php ukládá do stejné složky netuším...
jak jsem psala, mám jen základní znalosti :D :)
Amunak
Profil
Pavla12:
Pokud jde skutečně o jediný soubor který generuje chyby, použij řešení Jana Tvrdíka.

Alternativně by šlo použít taky v .htaccess složky, která obsahuje onen zmrseny-cron.php něco jako:
<Files zmrseny-cron.php>
php_value error_log "/dev/null"
</Files>
Věřím, že ta direktiva jde nastavit i takhle pro jediný soubor.

Samozřejmě musí jít o chyby PHP a ne Apache. Ale asi to tak bude, protože PHP často ve výchozí konfiguraci zapisuje svoje chyby do error logu Apache.
Pavla12
Profil *
to asi ne...
těch souborů je hodně...
takže??

<Files *.php>
php_value error_log "/dev/null"
</Files>
Amunak
Profil
Pavla12:
V ideálním případě všechny problémové soubory máte v jednom adresáři (a případně jeho podadresářích). Pak vytvoříte .htaccess s obsahem:
php_value error_log "/dev/null"
a veškerý PHP error log, který by jinak šel do stderr nebo někam do souboru, zmizí. Aplikuje se to na všechny soubory zpracovávané PHP parserem v adresáři a podadresářích, kam takovýto .htaccess umístíte.
Jen taková poznámka na okraj - tohle pochopitelně bude fungovat jen na linuxu, neboli tam, kde je tzv. nulové zařízení.
Pavla12
Profil *
děkan :)
Pavla12
Profil *
tak jsem vytvořila .htaccess
nahrála tam
php_value error_log "/dev/null"

a stejně se mi error.log plní rychlostí blesku...

modelový příklad: 300 řádků:
[Sun Oct 06 15:23:52 2013] [error] [client 78.45.77.65] File does not exist: /var/www/favicon.ico

nebo:

[Sun Oct 06 15:25:30 2013] [error] [client 37.48.32.93] PHP Notice: Undefined variable: o in /var/www/graf1/live.php on line 9


takové chyby ani opravit neumím :D
(min. 9 řádek obsahuje: if($i=="")$i=0; ) :D

takže se vracím zpět k apache2 (případně php5?) ... jak vypnu ukládání logů?
Amunak
Profil
Pavla12:
takové chyby ani opravit neumím :D
To je právě to smutné, protože tohle jsou ty nejběžnější a nejsnadněji opravitelné chyby.

To první bys ošetřila přes if(file_exists('/var/www/favicon.ico')), kdyby to mělo cenu, ale fvicon.ico se každý prohlížeč pokouší načítat. Beztak je to error od Apache, a ne z PHP. Prostě ve /var/www/ vytvoř favicon.ico.

Toho druhého se zbavíš tak, že tu nedefinovanou proměnnou prvně definuješ ;) Ale hodilo by se vidět ten kód trochu víc v kontextu.
Pavla12
Profil *
Amunak:
Toho druhého se zbavíš tak, že tu nedefinovanou proměnnou prvně definuješ ;) Ale hodilo by se vidět ten kód trochu víc v kontextu.

to je hezké ale ten soubor se načítá ve smyčce... takže jí definuji právě způsobem jak jsem psala... musela by jsem na takovou blbinu vytvořit blbou funkci...


když tak vidím tady ty vaše rady tak si asi napíšu jednoduchou app co mi každou hodinu error.log vymaže... :(
chtěla jsem pouze vědět jak vypnout logy, né jak opravit banální chyby :/
Amunak
Profil
Pavla12:
Ano, a my se ti pokoušíme vysvětlit, proč je to hloupost, a že je lepší opravit příčinu než důsledek.
Pavla12
Profil *
vpodstatě to log plní jen ty 2 chyby jak jsem zjistila a nemyslím si, že zrovna tyto 2 chyby jsou nějaké závažné...


s favicon.ico jsem v tom nevinně a nedefinovaná proměnná - v tom také nevidím tak šílenou chybu... :(
jen jsem chtěla vědět jak vypnout log který jsem nikdy v životě nepotřebovala, nevyužívala a byl pro pro mě nadbytečný...

no vytvořila jsem si jednoduchý Cčkový script na vymazání logů v apache2 který se cronem volá každých 30 minut
takže jsem to vpodztatě vyřešila :D
než rubání za špatně napsaný script jsem ale čekala spíše radu například nastavení automatického odmazání starších logů...
juriad
Profil
O favicon si říká každý dnešní prohlížeč automaticky. Chyby se zbavíš tím, že ten soubor vytvoříš; klidně ho vytvoř prázdný, prohlížeč si s tím poradí.

Ohledně nedefinované proměnné, to by vyžadovalo vidět ten kus kódu, kde ta chyba nastává.
Pavla12
Profil *
dá se říct, že to vypadá nějak takto, program, který tento php soubor načítá vytváří sám nekonečnou "smyčku" takže... si "domyslete" něco jako include"soubor.php"; na konci :D
pro mě je if nejjedoduší zjištění zda se soubor načetl poprvé nebo už se opakuje... nevidím v tom nic tak hrozného teda :)


<?
if($i=="")$i=0;
echo file_get_contents("http://admin:admin@server:8888/graf.dat?px=$i");
$i++;
?>
Kajman
Profil
if(!isset($i))$i=0;

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: