gelöst API-Fehlermeldungen aussagekräftiger und ins Log schreiben (können)

Thema wurde von iloki, 23. Oktober 2017 erstellt.

  1. iloki
    iloki Erfahrener Benutzer
    Registriert seit:
    15. August 2017
    Beiträge:
    64
    Danke erhalten:
    3
    Danke vergeben:
    4
    Derzeit sind die API-Fehlermeldungen oftmals wenig Aussagekräftig in Bezug auf den genauen Hintergrund:

    Beispiel:
    {"code":2,"status":"error","message":"A non-numeric value encountered","request":{"method":"GET","url":"https:\/\/shop.url.id","path":"\/api.php\/v2\/myapiextension","uri":{"root":"\/api.php","resource":"\/v2\/myapiextension"}}}

    Der Fehler tritt zudem nur sporadisch auf was das debuggen zusätzlich erschwert.
    Man weiss nicht genau wo im Script der Fehler auftritt.

    Es wäre schön, wenn Script, Codezeile, Funktion und vielleicht ein Strack-Trace - ähnlich den PHP-Fehlermeldungen - ausgegeben werden könnte.

    Eine Option, die API-Fehlermeldungen in ein Log zu schreiben würde die Sache abrunden.
    Danke!
     
  2. iloki
    iloki Erfahrener Benutzer
    Registriert seit:
    15. August 2017
    Beiträge:
    64
    Danke erhalten:
    3
    Danke vergeben:
    4
    Ich hab da gerade was gefunden - löst dies vielleicht schon mein Problem?

    Einfach eine Datei .dev-environment anlegen?

    Ich werde es direkt ausprobieren!

    PHP:
    // Quelle: /api.php
    // Ab Zeile 59

    /**
    * API Environment
    *
    * If the ".dev-environment" file is present it will override the API_V2_ENVIRONMENT value and
    * it will set the environment back to testing ('development' is only suitable for complete error display).
    *
    * @var string
    */
    $environment file_exists(__DIR__ '/.dev-environment') ? 'test' 'production';

    switch(
    $environment)
    {
       case 
    'development'// Complete verbose (HTML) output when errors occur.
          
    $config = array(
             
    'mode'  => 'development',
             
    'debug' => true
          
    );
          break;
       case 
    'test'// Includes PHP errors in the response body (stack trace).
          
    $config = array(
             
    'mode'  => 'test',
             
    'debug' => false
          
    );
          break;
       
       case 
    'production'// Will display error info in JSON format but hide extra information.
          
    $config = array(
             
    'mode'  => 'production',
             
    'debug' => false
          
    );
          break;
       
       default:
          throw new 
    Exception('Invalid APIv2 environment selected: ' $environment);
    }
     
  3. Torben Wark
    Torben Wark Gambio GmbH
    Registriert seit:
    15. Juli 2014
    Beiträge:
    2.581
    Danke erhalten:
    1.178
    Danke vergeben:
    399
    Für die Entwicklungsarbeit ist es tatsächlich hilfreich, wenn du dir eine .dev-environment-Datei in dein Shop-Root legst. Bedenke aber, dass der Shop dadurch langsamer werden wird, da auch JavaScripte dann unkomprimiert geladen werden und ein zusätzliches Logging in der Browserkonsole stattfindet. Daher solltest du die Datei auf jeden Fall wieder entfernen, wenn du mit deinen Arbeiten durch bist
     
  4. iloki
    iloki Erfahrener Benutzer
    Registriert seit:
    15. August 2017
    Beiträge:
    64
    Danke erhalten:
    3
    Danke vergeben:
    4
    Hallo Torben!
    Danke, prima das hat mir weitergeholfen den Fehler zu finden!
    Feature-Request ist damit erledigt!