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:         4.15 msec
Page Memory:   514.03k
docs / viewController / view (200)
Request UUID: 59e90719423af6.64310708
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.198.143.210
HTTP_X_REAL_IP
54.198.143.210
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
Wed, 23 Aug 2017 00:37:10 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
35154
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
1508443929.27
REQUEST_TIME
1508443929
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.203 DEBUG 309.77 Configuration loaded:
Array
(
    [0] => app_prod.yml
    [1] => config_prod.yml
)
2 2.457 DEBUG 323.38 Listener "kernel.terminate[webprofiler]" has been added because of hathoora.logger.webprofiler.enabled
3 2.608 DEBUG 326.77 Event kernel.ready has been registered.
4 2.796 DEBUG 335.14 Calling App dispatcher (Array ( [class] => customDispatcher [method] => dispatch ) )...
5 2.946 DEBUG 349.56 Event kernel.route has been registered.
6 3.129 DEBUG 378.93 Event kernel.controller has been registered.
7 3.150 DEBUG 379.88 Calling controller (\docs\controller\viewController::view) with following params
Array
(
    [0] => v1
    [1] => debugging
)
8 3.390 INFO 467.23 Template (docs/v1/debugging.tpl.php) loaded
9 3.459 INFO 475.01 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/htmlMeta.tpl.php) loaded
10 3.497 INFO 476.26 Template (/var/websites/hathoora.org/app/hathoora/docs//resources/templates/components/flashMessages.tpl.php) loaded
11 3.994 INFO 438.02 Template (docs.tpl.php) fetched.
12 4.019 DEBUG 437.62 Event kernel.response has been registered.
13 4.037 DEBUG 438.80 Event kernel.terminate has been registered.
14 4.078 DEBUG 442.02 Event kernel.terminate->webprofiler has been notified.
Profiling
template
# Time (msec) Name Cached Took (msec)
1 3.191 docs.tpl.php 0 0.750