# Add client IP into error log from some exceptions

**URL:** <https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716>\
**Category:** Need Help\
**Created:** [June 15, 2017, 10:22am UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716 "2017-06-15T10:22:26Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![gonzela2006](https://avatars.discourse-cdn.com/v4/letter/g/9fc29f/32.png) [@gonzela2006](https://discourse.cakephp.org/u/gonzela2006)\
**Post date:** [June 15, 2017, 10:22am UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716/1 "2017-06-15T10:22:26Z")

</div>

Hello,

How can I add Client IP into error.log for exceptions like:

- Cake\Controller\Exception\AuthSecurityException
- Cake\Network\Exception\InvalidCsrfTokenException
- Cake\Routing\Exception\MissingRouteException
- Cake\Network\Exception\MethodNotAllowedException

Thanks

---

<div class="post-metadata">

**Author:** ![gonzela2006](https://avatars.discourse-cdn.com/v4/letter/g/9fc29f/32.png) [@gonzela2006](https://discourse.cakephp.org/u/gonzela2006)\
**Post date:** [June 16, 2017, 12:41pm UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716/2 "2017-06-16T12:41:56Z")

</div>

@markstory @ADmad Can you help me regarding my question?

---

<div class="post-metadata">

**Author:** ![markstory](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/markstory/32/182_2.png) [@markstory](https://discourse.cakephp.org/u/markstory)\
**Post date:** [June 18, 2017, 2:05am UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716/3 "2017-06-18T02:05:22Z")

</div>

Have you enabled [exception logging](https://book.cakephp.org/3.0/en/development/errors.html#error-exception-configuration)? This should enable logging of the client IP and other request context data for all exceptions. If you want logging for those exact errors you will need to build your own `ErrorHandler`.

---

<div class="post-metadata">

**Author:** ![gonzela2006](https://avatars.discourse-cdn.com/v4/letter/g/9fc29f/32.png) [@gonzela2006](https://discourse.cakephp.org/u/gonzela2006)\
**Post date:** [June 18, 2017, 7:05am UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716/4 "2017-06-18T07:05:09Z")

</div>

@markstory Thanks for your reply

Yes, I already enabled exception logging but the logged data are without the client IP as you can see below

```
2017-06-17 18:30:05 Error: [Cake\Controller\Exception\AuthSecurityException] The request has been black-holed
Request URL: /Opyz
Stack Trace:
#0 /vendor/cakephp/cakephp/src/Controller/Component/SecurityComponent.php(130): Cake\Controller\Component\SecurityComponent->_validatePost(Object(App\Controller\LinksController))
#1 /vendor/cakephp/cakephp/src/Event/EventManager.php(422): Cake\Controller\Component\SecurityComponent->startup(Object(Cake\Event\Event))
#2 /vendor/cakephp/cakephp/src/Event/EventManager.php(391): Cake\Event\EventManager->_callListener(Array, Object(Cake\Event\Event))
#3 /vendor/cakephp/cakephp/src/Event/EventDispatcherTrait.php(78): Cake\Event\EventManager->dispatch(Object(Cake\Event\Event))
#4 /vendor/cakephp/cakephp/src/Controller/Controller.php(501): Cake\Controller\Controller->dispatchEvent('Controller.star...')
#5 /vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(116): Cake\Controller\Controller->startupProcess()
#6 /vendor/cakephp/cakephp/src/Http/ActionDispatcher.php(95): Cake\Http\ActionDispatcher->_invoke(Object(App\Controller\LinksController))
#7 /vendor/cakephp/cakephp/src/Http/BaseApplication.php(83): Cake\Http\ActionDispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
#8 /vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Http\BaseApplication->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#9 /vendor/cakephp/cakephp/src/Routing/Middleware/RoutingMiddleware.php(62): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#10 /vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\RoutingMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#11 /vendor/cakephp/cakephp/src/Routing/Middleware/AssetMiddleware.php(88): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#12 /vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Routing\Middleware\AssetMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#13 /vendor/cakephp/cakephp/src/Error/Middleware/ErrorHandlerMiddleware.php(81): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#14 /vendor/cakephp/cakephp/src/Http/Runner.php(65): Cake\Error\Middleware\ErrorHandlerMiddleware->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response), Object(Cake\Http\Runner))
#15 /vendor/cakephp/cakephp/src/Http/Runner.php(51): Cake\Http\Runner->__invoke(Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#16 /vendor/cakephp/cakephp/src/Http/Server.php(90): Cake\Http\Runner->run(Object(Cake\Http\MiddlewareQueue), Object(Zend\Diactoros\ServerRequest), Object(Zend\Diactoros\Response))
#17 /webroot/index.php(60): Cake\Http\Server->run()
#18 {main}

```

Only 404 error logging client IP

Please advise

---

<div class="post-metadata">

**Author:** ![littleylv](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/littleylv/32/494_2.png) [@littleylv](https://discourse.cakephp.org/u/littleylv)\
**Post date:** [June 19, 2017, 3:44am UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716/5 "2017-06-19T03:44:39Z")

</div>

@markstory  
I think it’s because the difference between this two files:

> <https://github.com/cakephp/cakephp/blob/master/src/Error/BaseErrorHandler.php#L330-L339>

  

> <https://github.com/cakephp/cakephp/blob/master/src/Error/Middleware/ErrorHandlerMiddleware.php#L202-L206>

---

<div class="post-metadata">

**Author:** ![markstory](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/markstory/32/182_2.png) [@markstory](https://discourse.cakephp.org/u/markstory)\
**Post date:** [July 15, 2017, 6:26pm UTC](https://discourse.cakephp.org/t/add-client-ip-into-error-log-from-some-exceptions/2716/6 "2017-07-15T18:26:18Z")

</div>

Yes that would do it. Reading an IP address out of a PSR7 request is non-trivial which is why it wasn’t included in the errorhandler middleware.
