Real-time monitoring
Pokud v naší aplikaci nastane chyba je dobré se oní dovědět co nejdříve (na ostrém serveru je to dokonce kritické). Díky tomuto rozšíření se o chybě dovíte takřka okamžitě.
| Verze | preview |
|---|---|
| Repozitář | https://github.com/Vrtak-CZ/realtime-monitoring-nette |
| Autor | Patrik Votoček (pro AceIT s.r.o.) |
| Licence | New-BSD |
| Požadavky | PHP 5.3+, Nette 2.0 beta, Server |
Informace
Toto rozšíření se stará o logovná vyjímek, klasických chyb (co mu laděnka řekne o tom se dovíte) a také přístupů.

Architektura
<klient> <---- notifikace ---- <server> <---- notifikace ---- <aplikace>
Toto řešení pracuje na principu centralizovaného logování všech vašich aplikací. Skládá se tedy ze tří částí.
- Klient (vy – resp. váš prohlížeč s WebSockets)
- Server
- Aplikace (vaše aplikace, která chce logovat chyby)
Budete potřebovat ještě serverovou část (http://github.com/…e-monitoring).
Jak nainstalovat Node.js server najdete https://github.com/…kage-manager
Instalace
use Nette\Diagnostics\Debugger;
/**
* @param string monitoring server host or IP
* @param string monitoring server log listener port
* @param string application name
* @param string application (for better detect - dev, pub, lab instance) - optional
*/
$server = new VrtakCZ\Diagnostics\LogServer("localhost", 5679, "My Application name", "Application server IP");
/**
* @param LogServer log server instance
* @param Logger another logger (for cascade log) - optional
*/
Debugger::$logger = new VrtakCZ\Diagnostics\Logger($server, Debugger::$logger); // Debugger::$logger - use default logger too (network problems etc)
$context->application->onShutdown[] = function($application) use($server) {
/**
* AccessLogger::create(...)
* @param LogServer log server instance
*
* AccessLogger->log(...)
* @param Nette\Http\Request nette http request object instance
*/
VrtakCZ\Diagnostics\AccessLogger::create($server)->log($application->context->httpRequest);
};
Ukázka
Předně logger automaticky zaznamenává klasické chyby (vyjímky, fataly, warningy).
Můžete ho ale použít i „ručně“:
use Nette\Diagnostics\Debugger;
require_once __DIR__ . "/nette.min.php";
require_once __DIR__ . "/../VrtakCZ/Diagnostics/LogServer.php";
require_once __DIR__ . "/../VrtakCZ/Diagnostics/Logger.php";
require_once __DIR__ . "/../VrtakCZ/Diagnostics/AccessLogger.php";
Debugger::enable(Debugger::DEVELOPMENT);
$reqFactory = new Nette\Http\RequestFactory;
$req = $reqFactory->createHttpRequest();
$server = new VrtakCZ\Diagnostics\LogServer("localhost", 5679, "Test");
Debugger::$logger = new VrtakCZ\Diagnostics\Logger($server);
if ($req->getQuery('error')) {
// Log errors etc
Debugger::log(new \Exception("Log Exception"), Debugger::ERROR);
Debugger::log("This is normal info message");
Debugger::log("Critical message", Debugger::CRITICAL);
Debugger::log("Error", Debugger::ERROR);
Debugger::log("An error occurred that did not occur", Debugger::WARNING);
Debugger::log("I need a beer!", Debugger::DEBUG);
}
// Log access
VrtakCZ\Diagnostics\AccessLogger::create($server)->log($req);
