Přidání IP adresy uživatele do logu při chybě
- roman.campula
- Člen | 60
Zdravím,
řeším problém, jak přidat do automaticky tvořených chybových logů
(error.log, exception.log) IP adresu uživatele, pravděpodobně z
$_SERVER['REMOTE_ADDR']
Jak to ale udělat? Snažil jsem se v BasePresenteru přetížit metodu Tracy\Debugger::log, ale nějak se to nepodařilo. Nevím, jak na to. Připadá mi to jako jedna ze základních věcí, co by měla v logu být.
- petr.jirous
- Člen | 128
Co takhle si to přidat přímo do hlášky v ErrorPresenteru?
V sandboxu je něco takového:
Debugger::log("HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access');
tak tam tu ip prostě někam přidáš
Debugger::log("[{$_SERVER['REMOTE_ADDR']}] - HTTP code $code: {$exception->getMessage()} in {$exception->getFile()}:{$exception->getLine()}", 'access');
- roman.campula
- Člen | 60
Děkuji za nápad, nedošlo mi, že to jde přes ErrorPresenter. Nicméně to funguje pouze na logy „error“ a „access“, ale v případě, že PHP vyhodí výjimku, tak ne. V logu exception.log lze text logovací zprávy také změnit?
- petr.jirous
- Člen | 128
exceptiony se tam také logují… nicméně ten log je složitější, protože se tam přidává celý objekt s Exceptionou… nejjednodušší bude do logu s exceptionou přidat před nebo za zalogování výjimky další log s IP adresou. Např.:
Debugger::log($exception, Debugger::EXCEPTION); // and log exception
Debugger::log("IP: {$_SERVER['REMOTE_ADDR']}", Debugger::EXCEPTION);
Editoval petr.jirous (26. 11. 2014 10:34)
- Mysteria
- Člen | 797
Osobně mám přepsanou část logovací metody v souboru Debugger.php:
self::getLogger()->log(array(
@date('[Y-m-d H-i-s]') . ($ip && $host ? " [$ip - $host]" : ''),
trim($message),
self::$source ? ' @ ' . self::$source : NULL,
$exceptionFilename ? ' @@ ' . basename($exceptionFilename) : NULL
), $priority);
Správě by se to mělo podědit a přepsat to v potomku, ale protože jak často upgraduju Nette, tak jsem to vyřešil takhle jednoduše.