Nette Logger - jak nastavit vlastní název logovacího souboru

Nette Logger - jak nastavit vlastní název logovacího souboru

Nyní se podíváme na Nette Logger - jak nastavit vlastní název logovacího souboru.


Klasické logování v Nette pomocí \Tracy\Debugger::log se provádí to souboru log/error.log atd => tzn. dle levelu např. ILogger::ERROR:

\Tracy\Debugger::log($e->getMessage(), ILogger::ERROR);

Když totiž uděláme

\Tracy\Debugger::log($e->getMessage(), 'myFileName');

Tak se nám zpráva uloží beztak do error.log a nikoliv do myFileName.log

 

Jak na logování do vlastního souboru myFileName.log

V kódu níže specifikujeme, že chceme logovat do souboru log/myFileName.log

$logger = new \Tracy\Logger(Debugger::$logDirectory);
$logger->log('text for log', 'myFileName');

 

Příklad s typickým použitím v try - catch

try {
    // vyvoláme vyjímku
    throw new \Exception('Nastala vyjímka XYZ');
}
catch (\Exception $e)
{
    // zalogujeme chybu do vlastního log souboru
    $logger = new \Tracy\Logger(Debugger::$logDirectory);
    $logger->log($e->getMessage(), 'myFileName');
}

Jak se ti článek líbil?

Komentáře (4)

Hugo
Čau,

potřebuji zprovoznit projekt v nette na hostingu, kde nemůžu změnit document root.

Document root je / ale já mám index v /www/index.php . Můžo to nějak nastavit přes soubor .htaccess?

Díky

Hanz
Ahoj,

uprav si document root pomocí htaccess pro nette takto:

/.htaccess (v rootu nette)
------------------------------
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ /www/$1 [NE]
< /IfModule>



/www/.htaccess (veřejně dostupný adresář www)
------------------------------
< IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /www/
RewriteRule /\.|^\.(?!well-known/) - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz|map)$ index.php [L]
< /IfModule>
Dupík
Dobrý den,

udělal jsem si metodu na promazání tempu nette:


public function handleDeleteTemp(): void
{
$cacheDir = __DIR__ . '/../../../temp/cache';

if (file_exists($cacheDir))
{
$files = scandir($cacheDir);

foreach($files as $file)
{
if (!in_array($file,['.','..']))
{
$dirTemp = $cacheDir."/".$file;
array_map('unlink', glob("$dirTemp/*.*"));
rmdir($dirTemp);
}
}
}

$this->redirect(":default");
}

Tato metoda funguje, ale jakmile se jedná o více podadresářů, tak to nefunguje. Uměl by to někdo přes rekurzi? Díky




OL3G
Dobrý den,

já bych to promazávání Nette tempu udělal rekurzivně takto a mám ověřeno, že to funguje:


/**
* Promazat temp cache rekurzivně
* @return void
*/
public function handleDeleteTemp($dirPath = __DIR__ . '/../../../temp/cache'): void
{
$files = glob($dirPath . '/*');

foreach ($files as $file)
{
if (is_dir($file))
{
$this->handleDeleteTemp($file);
}
else
{
unlink($file);
}
}
rmdir($dirPath);
}

Přidat komentář