kterak mit akcni ladenku a zaroven logovani do souboru?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wdolek
Člen | 331
+
0
-

nejak se mi nedari prijit na to, jak zaridit, aby v development rezimu ladenka nejen kricela chyby na vystup, ale zaroven je i logovala. cucel sem do zdrojaku Debug, ale moc jsem toho nevycetl. lze to nejak jednoduse nastavit.. nekde..?

(duvodem je to, ze si zjednodusuji praci a nechavam testera klikat na aplikaci v development modu. vzhledem k tomu, ze tester nema poneti, co je to nejaky back-trace, rad bych mel i chyby zalogovane v nejakem souburku, stejne jako by se chyba zalogovala v production)

zkousel jsem toto:

Debug::enable(Debug::DEVELOPMENT, Environment::getVariable('logDir') . '/error.log');

ale po logu ani pamatka

Aurielle
Člen | 1281
+
0
-

Logy se v development módu neukládají… buď přepni na production nebo si přepiš Laděnku tak, aby logovala i s dev módem.

wdolek
Člen | 331
+
0
-

hmm, toho jsem se trosku obaval. bylo by prilis troufale dat neco takoveho do „wishlistu“? precejen mi prijde zvlastni, ze je to takto natvrdo nastavene.

Lopata
Člen | 139
+
0
-

wdolek napsal(a):

hmm, toho jsem se trosku obaval. bylo by prilis troufale dat neco takoveho do „wishlistu“? precejen mi prijde zvlastni, ze je to takto natvrdo nastavene.

Podle mě to je zbytečné. Když v development módu objevím chybu, opravím ji. Proč bych ji proboha logoval…? Proč to děláš…?

wdolek
Člen | 331
+
0
-

Proč to děláš…?

ve firme kde delam me nikdo neposloucha, takze jsem rad, ze mam alespon ten „devel“ server (coz je muj notebook)… zadne testovaci prostredi nemam k dispozici. testeri tedy testuji primo aplikaci na devel prostredi.

samozrejme bych mohl pred kazdym testem nastavit v bootstrap.php mod na produkcni, ale… kdyz clovek je linej porad nekde prepisovat 1 radek.

navic instruktaz testeru v tom, co mi maji rict kdyz aplikace nekde vyhnije, je … mozna az nemozna

redhead
Člen | 1313
+
0
-

Tak na tohle jsem teďka také narazil.

Potřeboval jsem logovat „chybu“, kdy nebyl dostupný jiný server, z kterého čerpám data. Není to nutně chyba, která by měla zastavit zobrazení stránky (prostě napíšu sorry, možná příště) a to ani nevyhazuju výjimku, nýbrž pouze volám Debug::log($message) (nebo logMessage, už nevím, nemám při sobě). Jde o to, aby pak člověk, co to bude mít na starost v logu viděl, že se něco s tím serverem stalo (ať už nedostupnost, změna url, ..). Ale tohle mi bohužel při ladění vadí. Místo toho aby to prostě loglo a nekecalo, že neexistuje log soubor, a mohl jet dál.

Takhle si člověk musí napsat vlastní Logger, i když by to nebylo nutné (kdyby se to povolilo i v DEV modu)

pekelnik
Člen | 462
+
0
-

+1
Taky se přimlouvám aby šlo zapnout logování i v dev módu. Někdy se to prostě hodí a neustále přepínat řádek v bootstrap.php je fakt nuda…

natrim
Člen | 73
+
0
-

co použít automatické přepínání mezi produkčním a development modem pomoci IP adresy uživatele?
něco jako:

<?php
if(Environment::getHttpRequest()->remoteAddress !== '127.0.0.1'){
Debug::enable(Debug::PRODUCTION,TRUE);
}else{
Debug::enable(Debug::DEVELOPMENT);
}
?>

edit:
jinak pokud ctu spravne tak je mozny zapnout log i v dev modu napr:

<?php
ini_set('error_log', Environment::expand('%logDir%/php_error.log'));
ini_set('log_errors', true);
?>

Editoval natrim (28. 6. 2010 11:24)

pekelnik
Člen | 462
+
0
-

natrim napsal(a):

co použít automatické přepínání mezi produkčním a development modem pomoci IP adresy uživatele?
něco jako:

<?php
if(Environment::getHttpRequest()->remoteAddress !== '127.0.0.1'){
Debug::enable(Debug::PRODUCTION,TRUE);
}else{
Debug::enable(Debug::DEVELOPMENT);
}
?>

edit:
jinak pokud ctu spravne tak je mozny zapnout log i v dev modu napr:

<?php
ini_set('error_log', Environment::expand('%logDir%/php_error.log'));
ini_set('log_errors', true);
?>

Ano tohle všechno jde udělat – především při ajaxu se ale často hodí si tu chybu prohlídnout pěkně na RSOD a ne to někde lovit z 40px vysokýho firebugu…

Osobně nechápu důvod proč by vývojář „nemohl“ zapnout logování – aniž by se při tom nepřipravil o laděnku.

Manny7
Člen | 67
+
0
-
<?php
ini_set('error_log', Environment::expand('%logDir%/php_error.log'));
ini_set('log_errors', true);
?>

Taky se připojuju k prosbě – nejde to trošku jednoduše „potunit“, aby to i v develu logovalo?
Zkoušel jsem použít výše citovaný kód, ale pořádně nevím, kam jej umístit – zkoušel jsem do bootstrapu hned za nastavení laděnky, ale nic

Dr.Diesel
Člen | 53
+
0
-

Kucii kdyz neco potrebuju, omrknu kod, jestli to nedam sam, nez zacnu psat, „at to David zaridi“. :-P

Nechal nam tam nastesti lehkou mezirku, kterou tam to logovani natlacite :) . A sice ze napred to zapnete v production modu a pak prepnete do auto/devu. Logovani zustane zapnute.

NDebug::enable(NDebug::PRODUCTION,'/cesta/klogu/muj_php_error.log');
NDebug::enable(NDebug::DETECT,'/cesta/klogu/muj_php_error.log');

Pokud predchazi NDebug::enable() nacteni NEnvironment::loadConfig() , neni cesta potreba, bude logovat do defaultniho aplikacniho log adresare.

NDebug::enable(NDebug::PRODUCTION);
NDebug::enable();

Enjoy.

Editoval Dr.Diesel (29. 8. 2010 17:17)

pekelnik
Člen | 462
+
0
-

Ha! Já to zkoušel opačně a to nefunguje… :)

David Grudl
Nette Core | 8140
+
0
-

Nyní stačí nastavit Debug::$logFile na cestu k souboru a logování se tím vynutí.