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.10 msec
Page Memory:   514.03k
docs / viewController / view (200)
Request UUID: 5a2e4b636f1a16.05697222
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
www.hathoora.org
HTTP_X_FORWARDED_FOR
54.221.93.187
HTTP_X_REAL_IP
54.221.93.187
HTTP_CONNECTION
close
HTTP_ACCEPT_ENCODING
x-gzip, gzip, deflate
HTTP_USER_AGENT
CCBot/2.0 (http://commoncrawl.org/faq/)
HTTP_ACCEPT
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_IF_MODIFIED_SINCE
Thu, 19 Oct 2017 20:12:09 GMT
PATH
/sbin:/usr/sbin:/bin:/usr/bin
SERVER_SIGNATURE
Apache/2.2.15 (CentOS) Server at www.hathoora.org Port 80
SERVER_SOFTWARE
Apache/2.2.15 (CentOS)
SERVER_NAME
www.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
47652
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
1512983395.454
REQUEST_TIME
1512983395
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.300 DEBUG 309.77 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.574 DEBUG 323.38 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.739 DEBUG 326.77 Event kernel.ready has been registered.
4 2.942 DEBUG 335.14 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 3.100 DEBUG 349.56 Event kernel.route has been registered.
6 3.368 DEBUG 378.93 Event kernel.controller has been registered.
7 3.418 DEBUG 379.88 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => debugging
)
8 4.013 INFO 467.23 Template (docs/v1/debugging.tpl.php) loaded
9 4.227 INFO 475.01 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 4.500 INFO 476.26 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 5.702 INFO 438.02 Template (docs.tpl.php) fetched.
12 5.766 DEBUG 437.62 Event kernel.response has been registered.
13 5.807 DEBUG 438.80 Event kernel.terminate has been registered.
14 5.919 DEBUG 442.02 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.521 docs.tpl.php 0 2.055