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');
}

Komentáře

Vaše reakce na Nette Logger - jak nastavit vlastní název logovacího souboru
Hugo
#1904

19.04.2024 [1]
Č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
#1909

28.04.2024 [2]
Reakce na komentář #1904
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
#1935

22.08.2024 [3]
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
#1939

22.08.2024 [4]
Poslední komentář Reakce na komentář #1935
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);
}

Související obsah

programovani

nette

ajax

php

log

logger

Reference

Podívejte se na naše reference

Prohlédnout

Aplikace

Podívejte se na naše aplikace

Prohlédnout

Co umíme?

Podívejte se co umíme

Prohlédnout

Co umíme?

Vytváříme sofistikované aplikace pro náročné

Od webových aplikací přes android až po převodové můstky či složité informační systémy.

Podívejte se k nám

Máte ještě čas? Podívejte se na další rubriky

Tento web používá soubory cookie. Dalším procházením tohoto webu vyjadřujete souhlas s jejich používáním.. Více informací zde.