Complete steps to use yii3 loging using di

Hi,

Can any one provide complete steps to add logging in yii3 using di and Psr\Log\LoggerInterface

Thanks,

1: Install Logger (Monolog)
Yii3 uses PSR-3, so we install Monolog:

composer require monolog/monolog

2: Configure Logger in DI Container

Open your DI config (usually):

config/common/di.php

Add this:


use Psr\Log\LoggerInterface;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

return [
    LoggerInterface::class => function () {
        $logger = new Logger('app');

        // logs will be saved in runtime/logs/app.log
        $logger->pushHandler(
            new StreamHandler(__DIR__ . '/../../runtime/logs/app.log', Logger::DEBUG)
        );

        return $logger;
    },
];

3: Use Logger in Controller / Service

Now you can inject logger anywhere using DI:

use Psr\Log\LoggerInterface;

class SiteController
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function actionIndex()
    {
        $this->logger->info('This is info log');
        $this->logger->error('Something went wrong');

        echo "Check log file!";
    }
}

4: Log File Location

After running, check:
runtime/logs/app.log
You’ll see logs like:

[2026-04-09] app.INFO: This is info log
[2026-04-09] app.ERROR: Something went wrong

5: Different Log Types (Easy)

$this->logger->debug(‘Debug message’);
$this->logger->info(‘Info message’);
$this->logger->warning(‘Warning message’);
$this->logger->error(‘Error message’);
$this->logger->critical(‘Critical issue’);