Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Improve error handling #241

Merged
merged 24 commits into from
May 31, 2017
Merged

Improve error handling #241

merged 24 commits into from
May 31, 2017

Conversation

koriym
Copy link
Member

@koriym koriym commented May 29, 2017

  • more modular design for a customization
  • more flexible in logging in different context
  • the information of exception included in body
  • save contextual application root object log in bootstrap as `/var/log/context.{context}.log'
  • symlink to last log as `last.logref.log']

$ curl -i http://127.0.0.1:8080/

prod

HTTP/1.1 500 Internal Server Error
content-type: application/vnd.error+json

{
    "message": "Not Found",
    "logref": "bc2cb03a"
}

development

HTTP/1.1 500 Internal Server Error
content-type: application/vnd.error+json

{
    "message": "Not Found",
    "logref": "bc2cb03a",
    "request": "get page://self/not_found",
    "exceptions": "BEAR\\Resource\\Exception\\ResourceNotFoundException(page://self/not_found)",
    "file": "/Users/akihito/git/BEAR.Resource/src/AppAdapter.php:78"
}

var/log/{logref}.log

Wed, 31 May 2017 04:28:09 +0200
get page://self/ (prod-html-app)


Exceptions:

Twig_Error_Runtime(An exception has been thrown during the rendering of a template ("SQLSTATE[HY000]: General error: 1 no such table: todo").) in /Users/akihito/git/Polidog.Todo/var/twig/Index.html.twig(27)
PDOException(SQLSTATE[HY000]: General error: 1 no such table: todo) in /Users/akihito/git/Polidog.Todo/vendor/aura/sql/src/ExtendedPdo.php(771)

Trace:

#0 Twig_Template->displayBlock('content',Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Environment.php(462) : eval()'d code(87)
#1 __TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259->block_contents(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(215)
#2 Twig_Template->displayBlock('contents',Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Environment.php(462) : eval()'d code(74)
#3 __TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259->block_body(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(215)
#4 Twig_Template->displayBlock('body',Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Environment.php(462) : eval()'d code(41)
#5 __TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259->doDisplay(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(432)
#6 Twig_Template->displayWithErrorHandling(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_title',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_stylesheets',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_body',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_contents',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content',Object(__TwigTemplate_feb3d24e2a13087ac65ee54a38ae0ac28f766dab063271dd59361d77789b8259),'block_javascripts') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(403)
#7 Twig_Template->display(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Environment.php(462) : eval()'d code(24)
#8 __TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3->doDisplay(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(432)
#9 Twig_Template->displayWithErrorHandling(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8',Object(__TwigTemplate_7879fbfdd546241c13cb880ad720cf41a414c47f0faa9a468c2899a97bb47fa3),'block_content') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(403)
#10 Twig_Template->display(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8') in /Users/akihito/git/Polidog.Todo/vendor/twig/twig/lib/Twig/Template.php(411)
#11 Twig_Template->render(Object(BEAR\Resource\Request),'<form method="post" action="/" enctype="multipart/form-data"><div class="form-group"><input id="title" type="text" name="title" class="form-control" size="20" />
</div>
<input type="submit" name="submit" value="Add" class="btn btn-primary" />
</form>',0,200,'text/html; charset=utf-8') in /Users/akihito/git/Polidog.Todo/vendor/madapaja/twig-module/src/TwigRenderer.php(66)
#12 Madapaja\TwigModule\TwigRenderer->render(Object(Polidog_Todo_Resource_Page_Index_MiBZggA)) in /Users/akihito/git/Polidog.Todo/vendor/bear/resource/src/ResourceObject.php(201)
#13 BEAR\Resource\ResourceObject->toString() in /Users/akihito/git/Polidog.Todo/vendor/bear/sunday/src/Provide/Transfer/HttpResponder.php(22)
#14 BEAR\Sunday\Provide\Transfer\HttpResponder->__invoke(Object(Polidog_Todo_Resource_Page_Index_MiBZggA)) in /Users/akihito/git/Polidog.Todo/vendor/bear/resource/src/ResourceObject.php(223)
#15 BEAR\Resource\ResourceObject->transfer(Object(BEAR\Sunday\Provide\Transfer\HttpResponder),'/Users/akihito/git/Polidog.Todo/public','127.0.0.1','56546','PHP 7.1.4 Development Server','HTTP/1.1','127.0.0.1','8080','/','GET','/index.php','/Users/akihito/git/Polidog.Todo/public/index.php','/index.php','127.0.0.1:8080','curl/7.54.0','*/*',1496197689.516,1496197689) in /Users/akihito/git/Polidog.Todo/bootstrap/bootstrap.php(25)
#16 require('/Users/akihito/git/Polidog.Todo/bootstrap/bootstrap.php') in /Users/akihito/git/Polidog.Todo/public/index.php(4)

PHP Variables:

Array
(
    [GET] => Array
        (
        )

    [POST] => Array
        (
        )

    [COOKIE] => Array
        (
        )

    [FILES] => Array
        (
        )

    [SERVER] => Array
        (
            [DOCUMENT_ROOT] => /Users/akihito/git/Polidog.Todo/public
            [REMOTE_ADDR] => 127.0.0.1
            [REMOTE_PORT] => 56546
            [SERVER_SOFTWARE] => PHP 7.1.4 Development Server
            [SERVER_PROTOCOL] => HTTP/1.1
            [SERVER_NAME] => 127.0.0.1
            [SERVER_PORT] => 8080
            [REQUEST_URI] => /
            [REQUEST_METHOD] => GET
            [SCRIPT_NAME] => /index.php
            [SCRIPT_FILENAME] => /Users/akihito/git/Polidog.Todo/public/index.php
            [PHP_SELF] => /index.php
            [HTTP_HOST] => 127.0.0.1:8080
            [HTTP_USER_AGENT] => curl/7.54.0
            [HTTP_ACCEPT] => */*
            [REQUEST_TIME_FLOAT] => 1496197689.516
            [REQUEST_TIME] => 1496197689
        )

@koriym koriym changed the title Refactor Vnd.Error Improve error handling May 31, 2017
@koriym koriym merged commit ebc2f4a into bearsunday:1.x May 31, 2017
@koriym koriym deleted the error branch May 31, 2017 04:14
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant