I've got a Craft CMS installation that is set to production mode. I notice that my logs get flooded with a bunch of entries which don't seem very useful.

For example, in a matter of several days, I've already got console.log up to console.log.5 - So it's rotated the log file 5 times already. These files are filled with what seems like every single query that gets executed on the website. They're 70k lines a piece. It also logs a lot of entries in queue.log, among other files.

How can I stop logging information and only log things which require my attention, such as errors?


  • Are you sure you don't have devMode enabled in production? docs.craftcms.com/v3/config/config-settings.html#devmode
    – Brad Bell
    Commented Oct 27, 2018 at 21:42
  • My .env file is set to "production", and in config/general.php I'm don't have any devMode item in the production array. The linked documentation says the default value is false - so I would assume it should be false.
    – Tyler
    Commented Oct 27, 2018 at 23:43
  • 1
    We run into the same issue. We explicitly have devMode set to false in production and our queue and/or console logs generally fill all five files in a manner of minutes. It appears every single SQL query gets written to the log. It is so hard to diagnose issues when all the log files are overwritten/rewritten in a manner of minutes. Commented Feb 12, 2020 at 18:06

4 Answers 4


As someone who theoretically might inherit your site one day... and also as future-you trying to diagnose a problem... please don't try to limit what Craft logs. If you want a quicker way to look for critical problems, check out the Yii2 Debug Toolbar as discussed here Profiling your Website with Craft CMS 3’s Debug Toolbar

You can use it to very quickly and easily see only errors, or only warnings, and so on. And then if the additional data that Craft logs is needed to help you diagnose a problem, it'll still be there.

To learn how to parse the Craft CMS log files quickly, check out the Zen and the Art of Craft CMS Log File Reading

If you do end up wanting to make your own logger, check out the Creating a Custom Logger for Craft CMS article

I echo Brad's comments, though, unless for some reason devMode is on, it shouldn't be logging every query, except for performance profiling.


This will be a similar answer as here: Craft 3 large log file sizes

Basically Craft goes with Yii's default FileTarget settings, which is 5 log files of 10MB each before they start rotating out. Those are individual limits for both web.log and console.log files.

If you want to change those behaviors you'll need to modify those properties via a config/app.php file using your own FileTarget settings.

There's another post here with some useful guidance: Craft 3 plugins - Logging in a separate *.log file


We were having the same issue. Our logs were getting so dense with SQL statements that it was hard to find our errors. And for the most part, seeing Craft's internal SQL would not help us debug the problem.

What we've found is we can use the onelogger plugin. After installing it, we just needed to add a file called onelogger.php to our config file. This is what we used:


return [
  'logLevels' => getenv('ONELOGGER_LOG_LEVELS') ? explode(',', getenv('ONELOGGER_LOG_LEVELS')) : ['warning', 'error']

Even so this thread is old, maybe my answer can help someone: Cleanup Craft Logs

Basically it's possible via app.php to remove all unnecessary logs such as all the $_GET, $_POST, $_SERVER variables and all the SQL being logged.

The main point you need is to configure in app.php the log component. The entry 'logVars' will get rid of all the $_SERVER values logged (also fixed security issues with password appearing in the logs). The other interesting configuration is the 'except' array where we excluded a few classes. 'yii\db\Connection::*' for example removes all SQL logs.

return [
    'modules' => [
        'mymodule' => MyModule::class,
        // My modules mapped here
    'components' => [
        'log' => function() {
            return Craft::createObject([
                'class' => yii\log\Dispatcher::class,
                'targets' => [
                        'class' => codemix\streamlog\Target::class,
                        'url' => 'php://stderr',
                        'levels' => Craft::$app->getConfig()->general->devMode ?
                            (yii\log\Logger::LEVEL_ERROR | yii\log\Logger::LEVEL_WARNING | yii\log\Logger::LEVEL_INFO) :
                            (yii\log\Logger::LEVEL_ERROR | yii\log\Logger::LEVEL_WARNING),
                        'except' => [
                            'yii\db\Connection::*' // We don't want sql to be logged
                        // don't log global variables like $_SERVER etc periodically in logs.
                        // See: yii\log\Target::class, collect method usually appends getContextMessage
                        'logVars' => []
    'bootstrap' => [
        // My module names here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.