Använd error-loggen!
måndag, mars 5th, 2012Ofta när jag ska hjälpa någon av våra utvecklare med ett problem är min första fråga: Vad står det i loggen? Apache och php har väl utvecklade loggfunktioner och man kan med hjälp av dom få en ganska bra fingervisning om vad som orsakar problemet. Exempelvis kan det stå:
[Fri Mar 02 17:38:08 2012] [error] [client 127.0.0.1] PHP Parse error: syntax error, unexpected ';' in /var/www/smhifb/application/controllers/start.php on line 64</pre>
Just det här felet beror förmodligen på att det saknas en slutparantes eller klammer på rad 64 i filen start.php (Nu var det här bara ett exempel, eftersom rena syntaxfel så klart hittas av din IDE, som jag utgår ifrån att du använder.)
När jag utvecklar har jag alltid ett terminalfönster öppet som visar loggarna i realtid så att jag snabbt ska kunna se om det händer något som inte borde hända, när man surfar in i applikationen. Även om man inte märker några fel när man surfar så händer det ändå att det dyker upp fel i loggen. Oftast är detta då varningar eller notiser, vilka inte är fatala för körningen av koden. Det är väldigt vanligt att man ändrar i php.ini så att notiser och till och med varningar inte visas i loggen, koden fungerar ju ändå. Gör inte det! Se till att varningar och notiser loggas och fixa till felen! Den enda anledningen till att folk slår av notiser och varningar är att dom antingen är lata eller programmerar dåligt. Det är lika vanligt att de som har varningar och notiser aktiverat inte bryr sig om att rätta till dessa fel, eftersom det fungerar ändå. Var inte en lat programmerare! Konsekvensen blir att koden inte blir så optimerad som den kunnat vara, dessutom kan små fel bli betydligt större längre fram.
Ett litet tips, använd programmet multitail. Multitail är ett program som körs i konsollen och kan visa flera loggar samtidigt i realtid. Vanligen när man vill se en logg i realtid använder man sig av kommandot tail med växeln -f, exempelvis:
tail -f /var/log/httpd/error_log
Med multitail kör man istället
multitail /var/log/httpd/error_log /var/log/httpd/access_log
Detta medför att terminalfönstret delas på två och visar en logg i varje del. Det är otroligt smidigt att se error-loggen i den ena delen och access-loggen i den andra. Det allra bästa med multitail är att det har syntax highlighting, det skriver alltså ut olika saker i olika färger, vilket gör det enklare att se i loggen.
Så, en kort sammanfattning.
- Använd error-loggen
- Se till att varningar och notiser visas
- Fixa felen, även varningar och notiser
- Visa loggen i realtid i ett eget terninalfönster
- Använd multitail
Kod ska vara kul och är det också med rätt förutsättningar, en av dessa förutsättningar är att veta vad som är fel och framför allt veta att det är fel.