Autor Zpráva
Sirius
Profil
Zdravím,

došel jsem k závěru, že by bylo fajn mít přehled o všem co kdo provede na webu, od přihlášení, po editaci a mazání různých věcí. Chtít třeba i logování zobrazovaných stran by už asi bylo zbytečně moc. :) Jenže tak trochu nevím jak na to. Údaje bych asi zapisoval do databáze, spíš řeším jak tam ty údaje vhodně zapisovat, jelikož při psaní aplikace jsem s tím nepočítal. Napadají mne dvě možnosti:

1) Kompletně to přepsat a ke každý akci co uživatel vykoná přidat query s uložením dat do db.
2) V indexu, pravděpodobně úplně na konci, přečíst všechny údaje uložené v GET a POST a podle nich si rozvětvit co se zapíše a úplně na závěr to zapsat. Podle mého odhadu by se z těch polí měli dát vyčíst všechna potřebná data. - Tak mi došlo, že se tím nedá zjistit např. stahování souborů, pokud by se teda požadavek neposílal nějakému skriptu.

Ale bohužel se znám a když už to konečně sesmolím, tak mi dojde, že to vlastně fungovat nemůže / nebude tak jak jsem chtěl a můžu začít znova. Rád bych se toho tentokrát vyvaroval a proto se chci optat, jak to řešíte vy. Zkoušel jsem hledat, ale bez uspokojivých výsledků.

Díky za pomoc
AM_
Profil
-Ukládat nejlépe všechna superglobální pole ovlivnitelná uživatelem, tedy GET, POST, COOKIE, FILES, případně i SESSION (logy budou větší, ale přehlednější)
-Ukládání do souboru bude o něco rychlejší, než do DB - vzhledem k tomu, že data se jen přidávají nakonec a občas je potřeba z nich něco vyčíst
-Ukládal bych spíše na začátku indexu, než na konci (ačkoli se to nemá dělat, můžeš si v těle programu něco v superglobálních polích přepsat a pak by se to blbě dohledávalo)

Jinak moc nevím, co chceš slyšet, logování není nic složitého, jen to chrlí velký objem dat.
denCo
Profil
ja to riešim tak ako AM_ a ešte chybové kódy si posielam mailom do mailovej schránky, aj keď je niekedy toho moc, ale chytím prípadnú chybu skoro, takže ju môžem aj skoro opraviť
Sirius
Profil
A v jaké podobě to ukládáte? V případě ukladání do souborů ukládáte do jednoho velkého, nebo necháte vytvořit např. každý týden nový?

To posílání chyb na mail vypadá zajímavě, akorát zprovoznění něčeho takového mi přijde dost složité - přidat kus kódu ke všem chybovým hlášením. Ale zase by bylo vyřešené i logování chyb. Nyní to nepotřebuju, jakmile se nějaká chyba objeví, tak je mi to oznámeno na můj vkus až moc brzo, ale do budoucna... Je na to nějaká vychytávka, nebo se to opravdu musí udělat ručně?
denCo
Profil
spraviť to nieje ťažké, iba zápis do .htaccess
ErrorDocument 404 kam-sa-to-presmeruje.php

kde si nastavíš predmerovanie na určitú stránku, v ktorej jednoducho nastavíš posielanie na mail, samozrejme je vhodné pridať zopár údajov, ako IP, dátum a čas, potom pri akej požiadavke nastala chyba atď.

k tým logom, ja to robím tak, že raz za čas si logy prejdem, ak ma niečo zaujme, tak to riešim, inak zmažem obsah súboru a zase odznova :)
AM_
Profil
Teď mě napadlo, že opravdu pěkný chybový výpis ti poskytne laděnka z nette frameworku - lze ji používat i samostatně.
Sirius
Profil
denCo:
Do .htaccess nic zapsat nemůžu, když to udělám, tak to vrací 500. Pitomej hosting...

Ale za předpokladu, že se načte index, tak tam už je to ošetřené. Upravím teda soubor s 404kou. Chápu správně, že například předání chybných údajů (pokud se uživatel nehrabe kde nemá, tak by se to stát nemělo, ale raději to mám ošetřené) nebo chybu při dotazu na db nijak řešenou nemáš?

Váhám, jestli to udělat natolik automatické, že si předem nastavím, při čem mne upozorňovat, co všechno zaznamenávat atd. Počítám, že těch akcí bude zhruba 20, nic hrozného, akorát při nějakém rozšíření aplikace bych musel rozšířit i logování...

Edit:
AM:
To vypadá zajímavě, akorát mi trochu dělá starost věta "Snad nemusím dodávat, že vypisování chyb se nesmí nikdy dostat na produkční server." Ale na localhostu ji zkusím využít. :) Díky
denCo
Profil
Sirius:
čobynie, veď to všetko logujem do súboru, ktorý kontrolujem iba raz za týždeň a vážnejšie chyby si posielam hneť na mail, aby som o nich vedel v čo najkratšom čase
AM_
Profil
Sirius:
Snad nemusím dodávat, že vypisování chyb se nesmí nikdy dostat na produkční server.
To se dá vyřešit
Debug::enable(Debug::PRODUCTION)

chyby se pak elegantně ukládají jako HTML soubory do nějakého adresáře (s frameworkem je to app/log, bez frameworku nevím)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0