Feature: Logovani aplikace
Navrh na upravy logovani aplikace, aby bylo pouzitelnejsi
- [x] chybi timestamp
- hodne veci neni logovanych - nezobrazuje se v Zaznamu cinnosti aplikace
- [ ] pokud odstranim zavodnika
- [ ] pokud odhlasuju zavodnika
- [ ] dalsi jakekoli odstraneni radku ... a dalsi, prvni 2 beru jako temer nutne por pripad hledani problemu
- ukladani logu lokalne nebo do db i po skonceni programu - mozna jsem jen nenasel
V QE 2.3.9 vypadal log aplikace nasledovne:
Pokud se nepletu, tak s prechodem na necrolog se to zmenilo na soucasny stav:
Dle https://github.com/Quick-Event/quickbox/wiki/Debugging-QuickEvent drive fungoval parametr --log-file <path/to/log/file> a zaroven se log ukladal do Temp slozky, ani jedno se mi na soucasne verzi na W10 nepodarilo rozchodit / nepodarilo se mi najit dany soubor.
A proc vlatne doslo ke zmene logovani ? Zatim me prijde ze je to k horsimu, podle textu nademnou.
- k prechodu na necrolog doslo, protoze je to lepsi logovaci framevork, nez ten predchozi
- kam se ztratil timestamp nevim, ale je to nejaka regrese, protoze necrolog samozrejme timestamp obsahuje
- specialni switch byl odstranen, protoze stderr jde snadno otocit do souboru, takze neni potreba, aby to umela jeste aplikace. Vyjimkou by byl postmorten log, to znamena neco, co by uzivatel mohl poslat napr. po padu QE. Takova vec, ale neexistovala ani pred prechodem na necrolog.
opravil jsem ten chybejici timestamp :)
specialni switch byl odstranen, protoze stderr jde snadno otocit do souboru, takze neni potreba, aby to umela jeste aplikace. Vyjimkou by byl postmorten log, to znamena neco, co by uzivatel mohl poslat napr. po padu QE. Takova vec, ale neexistovala ani pred prechodem na necrolog.
Dle meho nazoru, pokud chceme aby nam uzivatele posilali logy z padu a divneho chovani, by QE mel logovat automaticky.
Nebo by aspon ve wiki melo byt jak to uzivatel ma udelat, ale aktualni.
Ne kazdy vi ze napr. ve Windows to logovani zapne : quickevent.exe 2> qe.log
V aplikačním logu jsou ještě sloupce Category, Function a Data, nevím, jestli se někde ještě využívají (plánují využívat), ale pokud ne, tak bych je navrhoval odebrat.
specialni switch byl odstranen, protoze stderr jde snadno otocit do souboru, takze neni potreba, aby to umela jeste aplikace. Vyjimkou by byl postmorten log, to znamena neco, co by uzivatel mohl poslat napr. po padu QE. Takova vec, ale neexistovala ani pred prechodem na necrolog.
Dle meho nazoru, pokud chceme aby nam uzivatele posilali logy z padu a divneho chovani, by QE mel logovat automaticky. Nebo by aspon ve wiki melo byt jak to uzivatel ma udelat, ale aktualni. Ne kazdy vi ze napr. ve Windows to logovani zapne :
quickevent.exe 2> qe.log
dyt to preci pisu, ze vyjimkou by byl posmorten log, ktery ale nebyl ani pred prechodem na necrolog
V aplikačním logu jsou ještě sloupce Category, Function a Data, nevím, jestli se někde ještě využívají (plánují využívat), ale pokud ne, tak bych je navrhoval odebrat.
Category se nekdy pouziva, Function a Data ne
jak správně vlastně logovat v quickeventu? měl bych se držet následujících maker?
qfDebug()
qfMessage()
qfInfo()
qfWarning()
qfError()
Jak mohu použít makra s category?
qfCWarning(category)
K čemu slouží:
qfLogScope(name) a qfLogFuncFrame()?
- qfDebug() - pro development, v release buildu se prelozi na NOP
- qfMessage() - neco, co neni defaultne v logu, ale prelozi se v release buildu, a da se v budoucnu zapnout z prikazove radky
-d :M - qfInfo() - prvni uroven, ktera projde defaultnim log filterem, takze zpravy, ktere jsou zajimave pri normalnim behu jako pripojuji se k DB a pod.
- qfWarning() jasny
- qfError() jasny
Jak mohu použít makra s category? qfCWarning(category)
loguje se pro urcitou kategorii. qfInfo() a spol se pouzivaji s prepinacem -d a loguji pro svuj modul, coz je cpp soubor, kde je makro pouzito. takze quickevent -d foo:W loguje vse z modulu foo.cpp s levelem Warning nebo Error
qfCInfo("bar") loguje kategorii bar bez ohledu v jakem modulu se nachazi, muze se nachaze i ve vice modulech.
priklad:
#define logNecoD() qfCDebug("Neco")
void foo()
{
logNecoD() << "zprava1";
qfCInfo("Neco") << "zprava1"; // stejne jako o radek vyse
}
qfLogScope loguje vstup a vystup ze scope, scope je to mezi chlupatymi zavorkami { scope } Specialni typ scope je funkce, na to je specializovane makro logFuncFrame