turk porno porno escort rokettube
Ergebnis 1 bis 9 von 9

Thema: Kapitel 4.4 Zend\Log

  1. #1
    Benutzer
    Registriert seit
    29.09.2011
    Beiträge
    45
    Thanks
    0
    Thanked 10 Times in 4 Posts

    Standard Kapitel 4.4 Zend\Log

    Hallo,

    habe bzgl. dem oben genannten Kapitel 3 Fragen.

    1.) Generell besteht bei mir das Problem, dass an allen Stellen, an denen ein Objekt erzeugt wird ein zusätzlichen Backslash vorangestellt werden muss. Bsp. new Zend\Log\Logger(), etc., wird zu new \Zend\Log\Logger(). Wo in meiner Konfiguration liegt der Fehler?

    2.) Habe einen Zend\Log\Writer\Mail dessen E-Mail Konfiguration, bestehend aus Absender und Empfänger, in einer INI-Datei ausgelagert ist. Wo sollte eine solche INI-Datei bestmöglich abgelegt werden? Habe mich aktuell für das Config-Verzeichnis in meinem Modul entschieden. Ist dies korrekt?

    3.) Bei der Formattern kann auf einen zusätzlichen Platzhalter %extra[foo]% zugegriffen werden? Ich habe ein Array an den Zend\Log\Logger übergeben, aber in der E-Mail wird mein zusätzlicher Parameter immer mit Key in geschweifter Klammer ausgegeben. Und beim Schreiben in die Datenbank (Zend\Log\Writer\Db) wird in das entsprechende Feld gar nicht gespeichert. Ich erhalten bspw. folgende Ausgabe: 2013-04-24T19:51:25+02:00 > EMERG (0): Message-Test {"foo":"Test"}. Wo liegt mein Fehler?

    Viele Grüße

    Alex

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von Alex.Mod Beitrag anzeigen
    1.) Generell besteht bei mir das Problem, dass an allen Stellen, an denen ein Objekt erzeugt wird ein zusätzlichen Backslash vorangestellt werden muss. Bsp. new Zend\Log\Logger(), etc., wird zu new \Zend\Log\Logger(). Wo in meiner Konfiguration liegt der Fehler?
    Hört sich eher nach Anwendungsfehler deinerseits an. Siehe Grundlagen zu Namespaces.

    Zitat Zitat von Alex.Mod Beitrag anzeigen
    2.) Habe einen Zend\Log\Writer\Mail dessen E-Mail Konfiguration, bestehend aus Absender und Empfänger, in einer INI-Datei ausgelagert ist. Wo sollte eine solche INI-Datei bestmöglich abgelegt werden? Habe mich aktuell für das Config-Verzeichnis in meinem Modul entschieden. Ist dies korrekt?
    Ich schieb mal deinen Satz zusammen: „E-Mail Konfiguration - Config-Verzeichnis“. Wenn du jetzt noch „Config“ übersetzte, sollte alles geklärt sein.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Benutzer
    Registriert seit
    29.09.2011
    Beiträge
    45
    Thanks
    0
    Thanked 10 Times in 4 Posts

    Standard

    Hallo,

    mh, bei dem Befehl "use" geht es ohne einen Backslash, ohne "use" nicht.

    Bzgl. der INI-Datei war meine Frage eher, in welche der drei Config-Verzeichnisse die Datei abgelegt werden sollte. Es gibt ein Verzeichnis des Modul Applikation, ein Verzeichnis des meinem Modul und ein Verzeichnis außerdem des Modul-Verzeichnisses.

    Viele Grüße

    Alex

  4. #4
    Neuer Benutzer
    Registriert seit
    25.04.2013
    Beiträge
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hallo,

    ich bin zwar auch noch ein ZF2 Neuling aber ich hätte gesagt die Configs für die Module intern gehören in das "config" Verzeichnis des Moduls selber und für Globale Configs in das "config" Verzeichnis außerhalb des "module" Ordners, und ich denke da "application" ja auch nur ein Modul ist gehört hier nichts hinein. Oder liege ich da komplett Falsch??

    Schöne Grüße

  5. #5
    Benutzer
    Registriert seit
    29.09.2011
    Beiträge
    45
    Thanks
    0
    Thanked 10 Times in 4 Posts

    Standard

    Hallo,

    genau, habe die Datei in das Config-verzeichnis von meinem Modul abgelegt, wollte nur sicher sein.

    Bzgl. Pkt. 3 gibt es auch im Web nur wenige Infos.

    Viele Grüße

    Alex

  6. #6
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Hallo Alex,

    wenn ich es richtig sehe, steht noch die Antwort zu Frage 3 aus. Der Einsatz des extra Parameters ist derzeit in der Tat so, dass er beim Simple Formatter als Array ausgegeben wird {"foo":"bar"} und dass der Db Formatter das sogar ignoriert. Du hast nun zwei Möglichkeiten. Entweder baust du die Parameter direkt in deine Message ein. Oder du schreibst einen eigenen Formatter. Wenn du den Simple Formatter erweiterst, musst du nur die Methode normalize() überarbeiten. Beim DB Formatter musst du die format() Methode anpassen.

    HTH,

    Ralf

  7. #7
    Benutzer
    Registriert seit
    29.09.2011
    Beiträge
    45
    Thanks
    0
    Thanked 10 Times in 4 Posts

    Standard

    Hallo Ralf,

    habe bereits versucht die Parameter direkt in meine Message zu integrieren, leider erfolglos.

    PHP-Code:
    new Formatter\Simple('%timestamp% > %priorityName% (%priority%): ' '%message%' PHP_EOL '%extra%'); # Liefert mir ein Array in Form von {"foo":"bar"}
    new Formatter\Simple('%timestamp% > %priorityName% (%priority%): ' '%message%' PHP_EOL '%extra[foo]%'); # Liefert mir einen String %extra[foo]% 
    Werde nun einfach die Parameter direkt in die Message integrieren und den zusätzlichen Parameter gar nicht erst nutzen. D.h. eine Stelle früher die Message entsprechend setzen.

    Bzgl. Frage Nr. 1: Habe meinen Konfigurationsfehler noch nicht gefunden. Kopiere die Code-Beispiele meistens aus dem Buch, aber nutze immer meine "Getting Started" Konfiguration.

    Viele Grüße

    Alex

  8. #8
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Hallo Alex,

    mit meinem Satz "Entweder baust du die Parameter direkt in deine Message ein." meinte ich im Prinzip dasselbe, wie du mit deinem Satz "Werde nun einfach die Parameter direkt in die Message integrieren und den zusätzlichen Parameter gar nicht erst nutzen.". Das wäre der einfachere Weg ohne eigenen Formatter.

    Zu dem Konfigurationsproblem. In den Beispielen zu Kapitel 4 ist es so, dass dort das Autoloading selber geladen wird (aus Demozwecken). In allen anderen Kapiteln wird dann das Autoloadijg der Anwendung verwendet und dort werden auch Namensräumen eingesetzt. Listing 4.10 müsste im Prinzip so umgeschrieben werden, wobei das Laden der autoload.php und das Initialisieren des Autoloaders entfällt.

    PHP-Code:
    use Zend\Log\Formatter\Simple;
    use 
    Zend\Log\Writer\Stream;
    use 
    Zend\Log\Logger;
    use 
    Pizza\Service\PizzaService;

    // define log file
    $logFile LUIGI_ROOT '/data/log/pizza.log';

    // prepare logger
    $formatter = new Simple(
        
    '%timestamp% - %priorityName% (%priority%) - %message% %extra%'
        
    'Y-m-d H:i:s'
    );
    $writer Stream($logFile);
    $writer->setFormatter($formatter);
    $logger = new Logger();
    $logger->addWriter($writer);

    // get toppings
    $toppings PizzaService::getRandomTopping(4);

    // log pizza
    $logger->log(Logger::INFO'Pizza mit ' implode(', '$toppings) . ' belegt');

    // output log
    echo implode(''file($logFile)); 
    Das bedeutet, dass du die ganzen Pfade nicht mehr eingeben musst, wenn du alle Namensräume oben in der Datei per "use" notierst. Wenn das Autoloading richtig konfiguriert ist, sollte das auf jeden Fall klappen.

    Gruß,

    Ralf

  9. #9
    Benutzer
    Registriert seit
    29.09.2011
    Beiträge
    45
    Thanks
    0
    Thanked 10 Times in 4 Posts

    Standard

    Hallo Ralf,

    ok, mit "use" funktionierte es bei mir auch.

    War ein Missverständnis, da in deinem Code-Listing gar kein "use" zu finden war.

    Viele Grüße

    Alex

Ähnliche Themen

  1. Codebeispiel Blog Kapitel 16 interner Server-Fehler
    Von hasenfreund im Forum Zend Framework 2 Buch
    Antworten: 2
    Letzter Beitrag: 15.04.2013, 22:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •