Atunci când moștenesc vreun proiect care îmi trântește notices, warnings și altele, log-urile de Apache devin rapid foarte… consistente (xdebug poartă și el o parte de responsabilitate). La un moment dat strânsesem câțiva GB de logs (atât access.log
cât și error.log
). Prin urmare, m-am obișnuit să le șterg periodic, o dată la câteva luni.
Fun fact: am avut un server în producție care strânsese >8GB în error.log
Și azi mi-a picat fisa: dacă fac fix același lucru de mai multe ori… înseamnă …. căăăăă…. pot…. automatiza! Hei, cine s-ar fi gândit?!
Facem un fișier clear-apache-logs.bat
în apache\bin
. În cazul meu: C:\xampp\apache\bin\clear-apache-logs.bat
în care punem următoarele linii:
call C:\xampp\apache\bin\httpd.exe -k stop
type nul > C:\xampp\apache\logs\error.log
type nul > C:\xampp\apache\logs\access.log
call C:\xampp\apache\bin\httpd.exe -k start
pause
Se întâmplă următoarele:
- Oprim apache
- Ștergem
error.log
- Ștergem și
access.log
- pornim apache
- Lăsăm fereastra deschisă, să vedem că s-a terminat totul cu bine.
Click 2 pe .bat
=> run as administrator. Gata.
Cum integrăm cu PHP Storm?§
Ctrl+Alt+S (settings) -> Tools -> External Tools:
În fereastra proaspăt deschisă completăm:
- Program:
powershell.exe
- Arguments:
-Command "Start-Process C:\xampp\apache\clear-apache-logs.bat -Verb RunAs"
- Debifăm
Syncronize files after execution
șiOpen console for tool output
.
Îl execuți apăsând de două ori Shift (search everywhere) și scriind Restart Apache
. Se deschide un cmd și cam aia e tot:
Cum îți place ție să-ți complici viața când există logrotate. Am văzut și eu loguri și de 30+GB cândva, dar acum logrotate cu centralizare de loguri în Graylog reprezintă soluția optimă și de stocare și de vizualizare.
E frumos să lucrezi cu grep, dar parcă mult mai frumos e când faci o căutare direct în Elasticsearch.
@Mălin: asta daca ar fi disponibil pe Windows!
@Cosmin: Există
@Mălin: probabil, dar sunt două chestii aici:
1. pe windows nu am reușit să fac logrotate să meargă bine (i.e. să-mi șteargă log-urile mai vechi) indiferent de setări
2. sunt cazuri în care vreau să șterg log-urile mid-day, complet razna (e.g. schimb proiectul și vreau un soi de clean slate), unde iar, logrotate nu ar ajuta.
Cât despre graylog: știu de el, dar pentru un dev mi se pare overkill
@Ionuț Staicu: In acest caz, Mălin pardon me