Znak procento v config.neon

n3t
Člen | 37
+
+1
-

Ahoj,

potřeboval bych do configu dostat následující zápis

- setFormatter(Monolog\Formatter\LineFormatter("[%datetime%] [%level_name%]: %message% %context%\n"))

Ale končím na chybě Missing parameter ‚datetime‘.

Zkoušel jsem zdvojovat, přidávat lomítka, rozdělovat řetězce, ale nic se mi nedaří. Je nějaká možnost jak do configu zapsat hodnotu %datetime% aniž by se snažila vyhodnotit jako parametr?

Dík

Editoval n3t (16. 11. 2019 18:10)

n3t
Člen | 37
+
0
-

Jediné co jsem nakonec byl schopen zprovoznit je toto:

$configurator->addParameters([
  '_' => '%',
]);

a v konfiguraci pak

- setFormatter(Monolog\Formatter\LineFormatter("[%_%datetime%_%] [%_%level_name%_%]: %_%message%_% %_%context%_%\n"))

Ale snad existuje přímočarejší přístup?

Marek Bartoš
Nette Blogger | 1146
+
0
-

%%datetime%% nefunguje?

n3t
Člen | 37
+
0
-

Ještě jsem chvíli zkoumal, a funguje, ale jak kde.

Tady to vyhodí chybu

monolog:
  channel:
    default:
      handlers:
        -
          create: Monolog\Handler\RotatingFileHandler(%logDir%/console.log, 10, Monolog\Logger::DEBUG)
          setup:
            - setFormatter(Monolog\Formatter\LineFormatter("[%%datetime%%][%%level_name%%]: %%message%% %%context%%\n"))

ale tady ne

services:
  log.formatter: Monolog\Formatter\LineFormatter("[%%datetime%%] [%%level_name%%]: %%message%% %%context%%\n")

monolog:
  channel:
    default:
      handlers:
        -
          create: Monolog\Handler\RotatingFileHandler(%logDir%/console.log, 10, Monolog\Logger::DEBUG)
          setup:
            - setFormatter(@log.formatter)

jedná se o contributte/monolog, může být chyba tam? Vypadá to jako by se ta sekce monolog parsovala dvakrát, poprvé to projde a podruhé už zas hledá parametr. Zkusil ještě znovu zdvojit, a to zas funguje

monolog:
  channel:
    default:
      handlers:
        -
          create: Monolog\Handler\RotatingFileHandler(%logDir%/console.log, 10, Monolog\Logger::DEBUG)
          setup:
            - setFormatter(Monolog\Formatter\LineFormatter("[%%%%datetime%%%%][%%%%level_name%%%%]: %%%%message%%%% %%%%context%%%%\n"))

Začíná to ale ztrácet na přehlednosti :) Každopádně mám to aktuálně jako službu, tam je vše ok.

Marek Bartoš
Nette Blogger | 1146
+
0
-

Parametry se expandují v nette/di a tenhle způsob zápisu konfigurace co máme v contributte/monolog interně jen volá jiný kód v nette/di (tady), takže bych v tom problém nehledal, ale netuším proč ti to nejde

her-ur
Člen | 20
+
0
-

Vypadá to na problém v Nette\DI\Helpers:: expand(). Stačí, aby ve stringu byl 2× znak %, viz: https://3v4l.org/ndv6X
Ale nevím, jestli to je bug nebo špatné použití?

Marek Bartoš
Nette Blogger | 1146
+
0
-

Už vidím v čem je problém. Při zpracování configu extension se expandují parametry a pak při načtení služeb přes $this->compiler->loadDefinitionsFromConfig() znova

Editoval Mabar (20. 11. 2019 18:53)