Processor nefunguje pro info log – monolog

Vojtech
Člen | 5
+
0
-

Ahoj,
potřebuji si v logu vypisovat jméno uživatele, který vyvolal log. Chtěl jsem na to jít přes processors a vytvořil jsem si třídu UserProcessor:

namespace App\Logging;

use Monolog\Processor\ProcessorInterface;
use Nette\Security\User;

class UserProcessor implements ProcessorInterface
{
    private User $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function __invoke(array $record): array
    {
        bdump("ahoj"); // Tento bdump se vypíše i při info logu
        $username = $this->user->isLoggedIn() ? $this->user->getIdentity()->getData()['username'] : 'guest';
        $record['extra']['user'] = $username;

        return $record;
    }
}


v services.neon jsem si ji zaregistroval:


monolog:
	channel:
		default: # default channel is required
			handlers:
				- Monolog\Handler\RotatingFileHandler(%appDir%/../log/syslog.log, 30, Monolog\Logger::WARNING)
				- Monolog\Handler\RotatingFileHandler(%appDir%/../log/info.log, 30, Monolog\Logger::INFO)
			processors:
				- @App\Logging\UserProcessor #Monolog\Processor\MemoryPeakUsageProcessor()

Ale uživatel se mi vypíše pouze při warning logu a výš:

$this->logger->info('Log that application did something');
[2025-01-27 15-30-26] Log that application did something  @  http://whatever/admin/
$this->logger->critical("Log that application did something wrong");
[2025-01-27T15:30:26.206199+00:00] default.CRITICAL: Log that application did something wrong [] {"user":"admin"}

Nevíte proč se info log chová jinak? A jak dostat informaci o uživateli i do info logu?

Předem díky za odpověď (Omlouvám se pokud jsem přehlédl něco očividného)

Marek Bartoš
Nette Blogger | 1311
+
0
-

A po volání $this->user ti dump funguje? Mohla tam nastat exception a co se pak stane záleží na nastavení exception handleru v Monolog\Logger

Vojtech
Člen | 5
+
0
-

Jj, žádnou exceptionu to neháže. User se normálně propíše do bdumpu.

public function renderDefault(): void
    {
        $this->logger->info("Ahoj test");
        $stop = $neexistuju; // zastav zde
 public function __invoke(array $record): array
    {
        bdump($this->user, "invoke"); // Tento bdump se vypíše i při info logu
        $username = $this->user->isLoggedIn() ? $this->user->getIdentity()->getData()['username'] : 'guest';
        $record['extra']['user'] = $username;

        return $record;
    }

Výstup zůstane stejný:

[2025-01-27 16-58-22] Ahoj test  @  http://