Küllaltki tüüpiliseks peetakse rakenduse vigade logimist. Proovitakse kasutada Aspect Oriented Programmingu võtteid, et saavutada see võimalikult lihtsalt, kuid siiski kui palju on kasu logist, mis kõik vead kirja paneb?
Paljudel kordadel kui vea kirja paneme, on rakendame ka mehhanisme, et olukorda taastada kasutaja jaoks. Seetõttu ei tohiks meid väga huvitada need veateated. Ise pole sattunud väga logisid lugema, võib-olla on see algaja õnn vms. Põhimõtteliselt peaksime kirja panema need juhtumid, mida me ei oota, mitte need, mis on vuugitäiteks. Näiteks kui proovime minna lehele ASP.NET MVC rakenduses, mille kontrollerit ei leita, siis võime saada küllaltki tüüpilise vea. Kas kellegi viga viitamisel peaks tootma meie logi? Arvatavasti oleks piisavalt kena näidata kasutajale kurba sõnumit, et seda lehte pole ja lõpetada sellega.
Teine probleem vigade logimisel on see, et need on juba tekkinud ning me ei teinud midagi selleks, et neid ennetada. Huvitav kontseptsioon oleks panna rakendus blogima. Selle realiseerimiseks tuleks valmistada rakendusele vastav diagnostika. Näiteks iga tunni aja tagant proovib kõik vajalikud ühendused üle ning mõne puudumisel annab teada ilusasti ajaveebi kandena (ühenduse puudumine ei tähenda, et rakendus peaks koheselt käpuli olema, vaid kogub lokaalselt tegevusi ja näitab kasutajatele infot cachest). Kui seda veidi lihtsamaks teha, siis see võiks ka siutsuda ehk luua Twitteri anloog.
Praegu näen kahte lähenemisviisi: logida etteaimamatud vead või üritada diagnoosida, millised probleemid võiksid tekkida ja teavitada seda eelnevalt. Viimase puhul pole veel mingit üldist lahendust näinud, kuid see võib olla koht, kus saab enda ideedel voolata lasta. Esimese puhul saab kenasti kasutada ära raamistikke, mida leidub hulgaliselt Log4Net, NLog, Log4J, Log4R. Ega selle kohta väga midagi rääkida polegi, sest tegemist oleks peamiselt ühe klassiga, millel on paar meetodit.
Kohati tundub, et logimisel polegi eriti mõtet. Näiteks NHibernate võib kirjutada tapeedirullegi täis, kuid reaalset kasu sellest pole. Pigem enne rakenduse avalikkuseni viimist tasuks käia näiteks NHProfileriga üle ja parandada vead. Kui suuremaid probleeme peaks tekkima rakenduse töötamisel, siis võib tekkida tunne, et päringuid eelnevalt ei testitud.
Seega olen seisukohal, et logimine on millegi tegemata jätmine: keskkonna eelduste kontrollimine, testimine, vigade töötlemine vms. Kui keegi leiab häid vastuargumente, siis olen avatud kuulama neid.
Loe veel sarnastel teemadel:
- Modernne tarkvara loomine VI: Uuendused võluväel, 23. november
- Modernne tarkvara loomine IV: Andmete kühveldamine, 16. november
- Modernne tarkvara loomine V: Mitu kasutajakontot sul on?, 18. november
- Modernne tarkvara loomine III: Andmebaasi versioonimine, 2. november
- Modernselt tarkvara loomine II: Seotud paelad, 29. oktoober
4 kommentaari
1
Halvasti kirjutatud logimisest ei ole nii või naa kasu, sest tapeedirullitäitest logidest miskit vajalikku üles leida on ka omaette kunst. Ehk seega kõike ei ole mõtet, vaid me enam-vähem ikka teame, kus võib viga tekkida ning paneme sinna logimise juurde. Ja siit tulles sinu mõtte juurde, et kui me niikuinii teame, millest võib viga tekkida või mis on need kriitilised kohad, siis miks mitte neid juba aegsasti kontrollida ja kuhugi teada anda.
Aga samas võib ootamatuid olukordi alati tekkida. Sellisel juhul ma leian, et logmisest palju efektiivsem oleks see, kui koguda kokku kõik vajalik info vea kohta, mille abil ideaalis peaks saama vea taastekitada ning edastada see vastavatele isikutele/süsteemidele edasi. Kui ma ei eksi, siis Ayende on seda lahendust edukalt kasutanud NHProfi juures.
Siim
10:29, 26. november
2
Kas see lahendus on eraldiseisev ning on võimalik lisada juurde enda süsteemidesse või tuleb veel igal ühel endal sellega tegeleda?
Marek Tihkan
12:17, 27. november
3
“Kas kellegi viga viitamisel peaks tootma meie logi? Arvatavasti oleks piisavalt kena näidata kasutajale kurba sõnumit, et seda lehte pole ja lõpetada sellega.”
ma arvan et lausa REEGLINA on vigase viitamise süü saidiomanikul endal, mitte viitajal. see tuleneb sellest et sinu saidil on kunagi muiste antud viide töötanud. ja sel juhul ongi ainuke mõistlik lahendus logimine, et saaks külastajad edaspidi suunata sinna, kuhu nad minna soovisid.
ap
14:01, 29. november
4
Minuteada mingit valmis tükki sellisest lahendusest ei ole, aga ma ei ole selle teema koha pealt uurinud ka väga palju.
Siim
12:33, 30. november
Lisa kommentaar
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
