Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[RFC][Monolog] Consider adding a hard limit on log buffered in dev #30333

Closed
lyrixx opened this Issue Feb 21, 2019 · 4 comments

Comments

Projects
None yet
3 participants
@lyrixx
Copy link
Member

lyrixx commented Feb 21, 2019

Description

When running consumer / worker in dev env, they leaks a lot. Symfony buffer all logs (mainly for the profiler). In CLI I'm not sure it makes sens.

So IMHO we could disable this feature in CLI or at least add an hard limit.

WDYT ?

@linaori

This comment has been minimized.

Copy link
Contributor

linaori commented Feb 22, 2019

Instead of not logging, what if we add a feature to limit messages in memory and force a flush after X messages and reset the counter?

EDIT: Might cause problems with fingers crossed though

@lyrixx

This comment has been minimized.

Copy link
Member Author

lyrixx commented Feb 22, 2019

@linaori I'm sorry if I was not clear enough, but I'm not talking of not logging, but instead I would like to disable the buffering.

Anyway, I will have a look at this this morning

@linaori

This comment has been minimized.

Copy link
Contributor

linaori commented Feb 22, 2019

My bad on that part! The buffering for fingers crossed still stands though, but perhaps we should make a file system buffer or make it possible to clear this particular buffer per worker iteration? Perhaps using kernel.reset to clear this?

@lyrixx

This comment has been minimized.

Copy link
Member Author

lyrixx commented Feb 22, 2019

actually I have no issue with finger crossed since it is not enabled in dev by default :)

@fabpot fabpot closed this Mar 17, 2019

fabpot added a commit that referenced this issue Mar 17, 2019

feature #30339 [Monolog] Disable DebugLogger in CLI (lyrixx)
This PR was merged into the 4.3-dev branch.

Discussion
----------

[Monolog] Disable DebugLogger in CLI

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   |
| Fixed tickets | #30333 symfony/monolog-bundle#165 #25876
| License       | MIT
| Doc PR        |

<details>
<summary>Considering this code:</summary>

```php
namespace App\Command;

use Psr\Log\LoggerInterface;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class LeakCommand extends Command
{
    protected static $defaultName = 'leak';

    private $logger;

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

        parent::__construct();
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $reportedAt = time();
        while (true) {
            $this->logger->info('Hello');

            if (time() - $reportedAt >= 1) {
                $output->writeln(sprintf('%dMb', memory_get_usage() / 1024 / 1024));
                $reportedAt = time();
            }
        }
    }
}
```

</details>

Without the patch
```
>…/dev/labs/symfony/website-skeleton(monolog %) bin/console leak
7Mb
28Mb
51Mb
76Mb
97Mb
````

With the patch
```
>…/dev/labs/symfony/website-skeleton(monolog %) bin/console leak
6Mb
6Mb
6Mb
6Mb
```

Commits
-------

17533da [Monolog] Disable DebugLogger in CLI
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.