Ich versuche, wiederverwendbare Logging-Bundle, die benutzerdefinierte Formatierung für Log-Nachrichten haben können, zu erstellen. Formatter ist in der Haupt-App-Konfigurationsdatei so eingestellt:PHP-Symfony-Anfrage-Stack nicht gefunden bei Bundle-Erweiterung laden
custom_logger:
formatter: AppBundle\Services\MessageFormatter
Dann in der LoggerBundle/DependencyInjection/CustomLoggerExtension.php
nachdem ich erhalten diese Konfiguration ich versuche Logger Service und setzen Formatierer
class CustomLoggerExtension extends ConfigurableExtension
{
public function loadInternal(array $mergedConfig, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');
$class = $mergedConfig['formatter'];
$obj = new $class;
$container->get('custom.logger')->setFormatter($obj);
aber die bekommen Problem ist, dass Logger Anfragestapel
services:
custom.logger:
class: LoggerBundle\Services\Logger
arguments: ['@request_stack']
verwendet und so, wenn ich versuche Service zu erhalten in loadInternal
Funktion scheint es, dass der Anfrage-Stack noch nicht initialisiert ist und ich Fehler erhalte: You have requested a non-existent service "request_stack"
Was ist die richtige Art, dies zu tun?
EDIT (2016-04-21 21:54:11)
Das ist seltsam. Selbst wenn ich den Anforderungsstapel lösche und erfolgreich den Formatierer in loadInternal
einstelle, ist er nicht im Dienst, wenn ich ihn vom Controller in der Haupt-App bekomme. Ich muss etwas wirklich falsch machen :)
Welche Version von Symfony2 verwenden Sie? –
@IaroslavGashuk 2.8.4 –
ist Ihr Bündel nach FrameworkBundle initialisiert? –