Repository navigation
Description
PHP Version
8.2
CodeIgniter4 Version
4.6.5
CodeIgniter4 Installation Method
Composer (using codeigniter4/appstarter)
Which operating systems have you tested for this bug?
Linux, Windows
Which server did you use?
apache
Environment
development
Database
No response
What happened?
We replaced CI4 Logger with Monolog Logger (3.9.0) for its flexibility (mostly so that we can log in console and in ECS format).
We recently updated the CI version from 4.6.3 to 4.6.5. When running the application in "development" environment, we encountered the following error messages:
Undefined property: Monolog\Logger::$logCache
- SYSTEMPATH\Debug\Toolbar\Collectors\Logs.php at line 95
- SYSTEMPATH\Debug\Toolbar\Collectors\Logs.php : 60
- SYSTEMPATH\Debug\Toolbar\Collectors\BaseCollector.php : 228
- SYSTEMPATH\Debug\Toolbar.php : 95
- SYSTEMPATH\Debug\Toolbar.php : 390
- SYSTEMPATH\Filters\DebugToolbar.php : 44
- SYSTEMPATH\Filters\Filters.php : 278
- SYSTEMPATH\Filters\Filters.php : 225
- SYSTEMPATH\CodeIgniter.php : 525
- SYSTEMPATH\CodeIgniter.php : 354
- SYSTEMPATH\Boot.php : 363
- SYSTEMPATH\Boot.php : 68
- FCPATH\index.php : 59
Steps to Reproduce
We followed the guidelines in Using Third-Party Loggers to create our own logger service.
namespace Config;
use CodeIgniter\Config\BaseService;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\StreamHandler;
use Monolog\Processor\PsrLogMessageProcessor;
use Monolog\Logger;
use Psr\Log\LoggerInterface;
class Services extends BaseService
{
public static function logger(bool $getShared = true): LoggerInterface
{
if ($getShared) {
return static::getSharedInstance('logger');
}
$formatter = new LineFormatter();
$formatter->setDateFormat(DATE_RFC3339_EXTENDED);
$handler = new StreamHandler(WRITEPATH . 'logs/app.log', 'debug');
$handler->setFormatter($formatter);
$logger = new Logger('sample-app');
$logger->pushHandler($handler);
$logger->pushProcessor(new PsrLogMessageProcessor());
return $logger;
}
}This setup would create an error of the Logs collector is enabled in Config\Toolbar. Disabling it works fine
namespace Config;
class Toolbar extends BaseConfig
{
public array $collectors = [
Timers::class,
Database::class,
Logs::class,
Views::class,
// \CodeIgniter\Debug\Toolbar\Collectors\Cache::class,
Files::class,
Routes::class,
Events::class,
];
}Expected Output
I'm not sure if the Logs collector should work with 3rd-party PSR-3 Loggers or not, but if not, maybe a check would be nice if Logger->logCache actually exists.
We expect that there are no issues with the DebugToolbar if support for 3rd-party loggers is possible.
Anything else?
I think the problem already occurred first since version 4.6.4, though not tested yet.
Above's code example created the following log lines in writable/logs/app.log (except for the Route and Filter parameter parts).
[2026-05-07T09:14:58.602+01:00] sample-app.CRITICAL: ErrorException: Undefined property: Monolog\Logger::$logCache [Method: GET, Route: dashboard/deliveries/index/false] in SYSTEMPATH\Debug\Toolbar\Collectors\Logs.php on line 95. 1 SYSTEMPATH\Debug\Toolbar\Collectors\Logs.php(95): CodeIgniter\Debug\Exceptions->errorHandler(2, 'Undefined property: Monolog\\Logger::$logCache', 'C:\\Users\\christian.rumpf\\Documents\\GitHub\\valde-dettol\\htdocs\\vendor\\codeigniter4\\framework\\system\\Debug\\Toolbar\\Collectors\\Logs.php', 95) 2 SYSTEMPATH\Debug\Toolbar\Collectors\Logs.php(60): CodeIgniter\Debug\Toolbar\Collectors\Logs->collectLogs() 3 SYSTEMPATH\Debug\Toolbar\Collectors\BaseCollector.php(228): CodeIgniter\Debug\Toolbar\Collectors\Logs->display() 4 SYSTEMPATH\Debug\Toolbar.php(95): CodeIgniter\Debug\Toolbar\Collectors\BaseCollector->getAsArray() 5 SYSTEMPATH\Debug\Toolbar.php(390): CodeIgniter\Debug\Toolbar->run(1778141697.83611, 0.7603, Object(CodeIgniter\HTTP\IncomingRequest), Object(CodeIgniter\HTTP\Response)) 6 SYSTEMPATH\Filters\DebugToolbar.php(44): CodeIgniter\Debug\Toolbar->prepare(Object(CodeIgniter\HTTP\IncomingRequest), Object(CodeIgniter\HTTP\Response)) 7 SYSTEMPATH\Filters\Filters.php(278): CodeIgniter\Filters\DebugToolbar->after(Object(CodeIgniter\HTTP\IncomingRequest), Object(CodeIgniter\HTTP\Response), null) 8 SYSTEMPATH\Filters\Filters.php(225): CodeIgniter\Filters\Filters->runAfter([...]) 9 SYSTEMPATH\CodeIgniter.php(525): CodeIgniter\Filters\Filters->run('dashboard/deliveries/index/false', 'after') 10 SYSTEMPATH\CodeIgniter.php(354): CodeIgniter\CodeIgniter->handleRequest(null, Object(Config\Cache), false) 11 SYSTEMPATH\Boot.php(363): CodeIgniter\CodeIgniter->run() 12 SYSTEMPATH\Boot.php(68): CodeIgniter\Boot::runCodeIgniter(Object(CodeIgniter\CodeIgniter)) 13 FCPATH\index.php(59): CodeIgniter\Boot::bootWeb(Object(Config\Paths)) {"message":"Undefined property: Monolog\\Logger::$logCache","routeInfo":"[Method: GET, Route: dashboard/deliveries/index/false]","exFile":"SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php","exLine":95,"trace":" 1 SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php(95): CodeIgniter\\Debug\\Exceptions->errorHandler(2, 'Undefined property: Monolog\\\\Logger::$logCache', 'C:\\\\Users\\\\christian.rumpf\\\\Documents\\\\GitHub\\\\valde-dettol\\\\htdocs\\\\vendor\\\\codeigniter4\\\\framework\\\\system\\\\Debug\\\\Toolbar\\\\Collectors\\\\Logs.php', 95)\n 2 SYSTEMPATH\\Debug\\Toolbar\\Collectors\\Logs.php(60): CodeIgniter\\Debug\\Toolbar\\Collectors\\Logs->collectLogs()\n 3 SYSTEMPATH\\Debug\\Toolbar\\Collectors\\BaseCollector.php(228): CodeIgniter\\Debug\\Toolbar\\Collectors\\Logs->display()\n 4 SYSTEMPATH\\Debug\\Toolbar.php(95): CodeIgniter\\Debug\\Toolbar\\Collectors\\BaseCollector->getAsArray()\n 5 SYSTEMPATH\\Debug\\Toolbar.php(390): CodeIgniter\\Debug\\Toolbar->run(1778141697.83611, 0.7603, Object(CodeIgniter\\HTTP\\IncomingRequest), Object(CodeIgniter\\HTTP\\Response))\n 6 SYSTEMPATH\\Filters\\DebugToolbar.php(44): CodeIgniter\\Debug\\Toolbar->prepare(Object(CodeIgniter\\HTTP\\IncomingRequest), Object(CodeIgniter\\HTTP\\Response))\n 7 SYSTEMPATH\\Filters\\Filters.php(278): CodeIgniter\\Filters\\DebugToolbar->after(Object(CodeIgniter\\HTTP\\IncomingRequest), Object(CodeIgniter\\HTTP\\Response), null)\n 8 SYSTEMPATH\\Filters\\Filters.php(225): CodeIgniter\\Filters\\Filters->runAfter([...])\n 9 SYSTEMPATH\\CodeIgniter.php(525): CodeIgniter\\Filters\\Filters->run('dashboard/deliveries/index/false', 'after')\n10 SYSTEMPATH\\CodeIgniter.php(354): CodeIgniter\\CodeIgniter->handleRequest(null, Object(Config\\Cache), false)\n11 SYSTEMPATH\\Boot.php(363): CodeIgniter\\CodeIgniter->run()\n12 SYSTEMPATH\\Boot.php(68): CodeIgniter\\Boot::runCodeIgniter(Object(CodeIgniter\\CodeIgniter))\n13 FCPATH\\index.php(59): CodeIgniter\\Boot::bootWeb(Object(Config\\Paths))"} []
Activity
michalsn commentedon May 7, 2026
@performrumpf Thank you for reporting.
The Debug Toolbar Logs tab relies on CodeIgniter's internal logger cache, so third-party PSR-3 loggers will not populate that tab. However, they also should not cause an error.
You can test #10173 for a fix if you have time - thanks!