Fork me on GitHub

Debugging

Configuration

To enable debugging use the following configuration

        
            # File config.yml

            hathoora:
                logger:
                    profiling:
                        enabled: 1
                    logging:
                        enabled: 1
                        level: DEBUG
                    webprofiler:
                        enabled: 1
                        content_types: ['text/html']
                        skip_on_ajax: 1
                        skip_on_post_params: []
                        skip_on_get_params: []
                        show_redirects: false
                        system: fale
                        template: PATH TO TEMPLATE
        
    

There are three main components to logging:

  • proiling: to profile things like database, cache, template and grid.
  • logging: the usual logging with the ability to specify a following log level:
    • DEBUG: most verbose, lots of information
    • INFO: useful information, lesser than DEBUG
    • WARNING: show only warnings
    • ERROR: to show only errors
    • FATAL: internal usage when PHP dies and hathoora's error handling is enabled.
  • webprofiler: to show web profiler at the bottom of the page. Further options available:
    • content_types: array of content type of controller's response for which web profiler will be displayed.
    • skip_on_ajax: don't show webprofiler when it is an AJAX request.
    • skip_on_post_params: array of POST params for which webprofiler will not be shown.
    • skip_on_get_params: array of GET params for which webprofiler will not be shown.
    • show_redirects: when enabled would intercept redirects.
    • system: when enabled would display system information about load, processes etc to get some sense of webserver's performance.
    • template: don't like the default webprofiler template? Use your own by defining a file path and use this as an example.

If you are following documentation about setting up multiple environmnets, then you can enable debugging options for your development server easily.

:

Webprofiler

This is what webprofile looks like, when enabled:




Logging

Following shows an example of how to log.

        
            hathoora\logger\logger::log($level, $message);
        
    

printr() and vardump()

There are two handy functions that are available for print_r() and var_dump() respectively. They simply display output nicely, with the possibility of exiting the code.

        
            printr($arr);
            printr($arr, 'Die message');

            vardump($var);
            vardump($var, 'Die message');
        
    

Also checkout the following debugging tools:

Page Took:         6.72 msec
Page Memory:   516.94k
docs / viewController / view (200)
Request UUID: 5dafe717be7472.46848029
Get
Post
Cookies
Files
Session
Server
Response
No data.
No data.
No data.
No data.
No data.
REDIRECT_HATHOORA_ENV
prod
REDIRECT_STATUS
200
HATHOORA_ENV
prod
HTTP_HOST
hathoora.org
HTTP_X_FORWARDED_FOR
34.204.189.171
HTTP_X_REAL_IP
34.204.189.171
HTTP_CONNECTION
close
HTTP_USER_AGENT
CCBot/2.0 (https://commoncrawl.org/faq/)
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE
en-US,en;q=0.5
HTTP_IF_MODIFIED_SINCE
Sat, 20 Jul 2019 15:46:40 PDT
HTTP_ACCEPT_ENCODING
gzip
PATH
/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE
Apache/2.2.15 (CentOS) Server at hathoora.org Port 80
SERVER_SOFTWARE
Apache/2.2.15 (CentOS)
SERVER_NAME
hathoora.org
SERVER_ADDR
192.168.1.11
SERVER_PORT
80
REMOTE_ADDR
207.126.164.119
DOCUMENT_ROOT
/var/websites/hathoora.org/docroot
SERVER_ADMIN
webmaster@hathoora.org
SCRIPT_FILENAME
/var/websites/hathoora.org/docroot/index.php
REMOTE_PORT
56240
REDIRECT_URL
/docs/v1/debugging
GATEWAY_INTERFACE
CGI/1.1
SERVER_PROTOCOL
HTTP/1.0
REQUEST_METHOD
GET
QUERY_STRING
REQUEST_URI
/docs/v1/debugging
SCRIPT_NAME
/index.php
PHP_SELF
/index.php
REQUEST_TIME_FLOAT
1571809047.779
REQUEST_TIME
1571809047
Status: 200
Headers:
Content-Type
text/html; charset=UTF-8
Configutation
Key Value
app.admin
Array
(
    [pattern] => /admin(|/)
    [directory] => hathoora
    [namespace] => hathoora\admin
)
app.docs
Array
(
    [pattern] => /docs(|/)
    [directory] => hathoora
    [dispatcher] => Array
        (
            [class] => customDispatcher
            [method] => dispatch
        )

)
app.site
Array
(
    [default] => 1
)
hathoora.logger
Array
(
    [profiling] => Array
        (
            [enabled] => 1
        )

    [logging] => Array
        (
            [enabled] => 1
            [level] => DEBUG
        )

    [webprofiler] => Array
        (
            [enabled] => 1
            [system] => 
            [show_redirects] => 
        )

)
hathoora.template
Array
(
    [engine] => Array
        (
            [name] => Stuob
        )

)
hathoora.database
Array
(
    [default] => mysql://dbuser:dbpassword@dbhost:3306/dbname
)
services.container
Array
(
    [class] => \hathoora\container
    [method] => getContainer
)
Logging (14)
hathoora.logger.logging.enabled: 1
# Time (msec) Level Memory (KB) Message
1 2.369 DEBUG 310.33 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.673 DEBUG 323.94 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.869 DEBUG 327.33 Event kernel.ready has been registered.
4 3.101 DEBUG 335.70 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 3.281 DEBUG 350.48 Event kernel.route has been registered.
6 3.611 DEBUG 379.82 Event kernel.controller has been registered.
7 3.662 DEBUG 380.77 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => debugging
)
8 4.287 INFO 468.12 Template (docs/v1/debugging.tpl.php) loaded
9 4.813 INFO 476.81 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 4.950 INFO 478.06 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 6.172 INFO 439.83 Template (docs.tpl.php) fetched.
12 6.237 DEBUG 439.42 Event kernel.response has been registered.
13 6.279 DEBUG 440.61 Event kernel.terminate has been registered.
14 6.471 DEBUG 443.83 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.770 docs.tpl.php 0 2.268