Eigenes Logging / eigenen Log-Eintrag


#1

Hi liebe Community, ich bin leider selbst kein hardcore PHP-Entwickler und kenne mich in dem Bereich nur oberflächlich aus. Es wäre aber super, wenn mir Jemand helfen könnte. Ich habe ein starkes Problem mit 2 Aggrosoft-Modulen für Zahlungsarten. Dort passieren immer wieder Abbrüche und es wird aber erst etwas in die Modul-Log-Datei geschrieben, wenn die Bestellung sowie Bezahlung erfolgreich durch ist. Wie und vor allem wo im PHP kann ich ein Logging erzeugen, dass mir sagt, wann auf den “Bestellen” Button gedrückt und welche Zahlmethode ausgewählt wurde? Das würde mir für eine Analyse sehr weiterhelfen.
Ich habe PHP 5.5 und Oxid 4.7 am Laufen.


#2

Schau mal in order.php public function execute(){...} und oxorder public function finalizeOrder(...}
In Letzterer kannst die ID abfangen und irgendwo im eigenen Log hinterlegen: $oUserPayment = $this->_setPayment($oBasket->getPaymentId());


#3

ah sehr geil! danke für die schnelle Antwort!, Ddas hilft mir schon etwas. Und wie ist so der best practice mit Oxid eine Logdatei zu erzeugen und Dinge reinzuschreiben. Wie gesagt: bin kein PHP Dude. Aber wenn ihr dafür eine coole Doku oder so habt, komme ich evtl klar :wink:


#4

Dazu gibt’s aber wirklich genug im Finder.


#5

OK, super, das Loggen funktioniert soweit super, aber das Problem ist, dass sich das eine Bezahlmodul direkt hinter den Bestellen-Button und vor das order execute hängt… Komme ich da irgendwie dazwischen? im Modul selbst kann ich nichts loggen, da es verschlüsselt ist


#6

Schau mal in die metadata.php des Moduls, welche Klassen erweitert werden. oxorder, order etc. ?


#7

‘extend’ => array(
‘order’ => ‘su/su_order’,
‘oxshopcontrol’ => ‘su/su_shopcontrol’,
‘partnershop_order’ => ‘su/su_order’
)


#8

Oder kann ich mir vielleicht schon logs erstellen, sobald der letzte Warenkorb-Step aufgerufen wird? Ob die Bestellung dann ausgelöst wird ist erstmal zweitens.


#9

Du kannst logs erstellen wann du willst, du musst nur den PHP Code an der richtige Stelle einfügen. Frag doch mal bei dem Modulanbieter, ob er dir gegen eine NDA den Source Code zumindest von den betroffenen Dateien geben würde. Das erleichtert die Fehlersuche ungemein


#10

Du kannst auch versuchen, an order anzusetzen und Deine Anweisung vor dem anderen Modul auszuführen. In order sollte es die Methode execute sein.: Ähnliches Bsp s. Link


#11

Warum das Rad neu erfinden?

Registry::getUtils()->writeToLog($sMessage, $sLogfile);