Debug - skilchen/bots GitHub Wiki

Standard: via bots-monitor

  • the reports-screen gives an overview of what happened in a run.
  • if there are process errors in a run, first view the process errors!
  • the incoming-screen gives information about the results of each incoming file
  • for each incoming edi-file: view the detail-screen for information about the processing steps for incoming/outgoing edi file (in incoming-screen move your mouse to the star at the start of the line, a drop-down box will appear, choose 'details'.
  • view the outgoing files, including communication errors for outgoing files.

Extended debug options

Note: the errors bots gives for incoming edi-files are quite accurate;-))

  • in config/bots.ini there is the parameter get_checklevel. Set to to 2 for developing. Than all gets/puts are checked with the grammar(s).

    For production use 1 (does sanity checks on get/puts) or 0 (which is fastest, but if errors gives probably strange error-messages).

  • if wished, use extended errors: parameter 'debug' in bots.ini; gives information about the place in the code where the error occurred.

  • logging. Logging can be found in botssys/logging. Parameters in bots.ini can be set to get more debug information:

    • log_file_level: set to DEBUG to get extended information.
    • readrecorddebug: information about the records that are read and their content.
    • mappingdebug: information about the results of get()/put() in the mapping script. Note: in bots 3.0.0 this does not work (bug). Fix: in botsinit.py, line 188 should be: botsglobal.logmap = logging.getLogger('engine.map')
  • extended log information for some communication protocols in bots.ini: ftpdebug, smtpdebug, pop3debug. This debug-information is on the console/command line.

  • within a mapping script (or other user script) use 'print', output can be viewed on the console/command line.

  • use root.display() to see message content in mapping script:

    • incoming messages: at the start of the main function inn.root.display()
    • outgoing messages: at the end of the main function: out.root.display()

root.display() is not the nicest output, but is definitely what you receive/have generated.

Tips for debugging

  • if a run has process errors, first check the process errors!

  • Be careful with character-set/encoding:

    • Can your editor handle this? Be careful with editing files and saving these again, you might run into issues with character-set/encodings!
    • Are you familiar with the character-set you use? Are you familiar with eg utf-8? If not, please check this first.
  • in reality, edifact and x12 messages contains errors. Especially when 'found on internet'; lot of ISA headers for X12 are not OK!