Seldaek / monolog

Sends your logs to files, sockets, inboxes, databases and various web services
https://seldaek.github.io/monolog/
MIT License
21.01k stars 1.9k forks source link

Close file handle after each write #1883

Open Seldaek opened 6 months ago

Seldaek commented 6 months ago

refs #1862, refs #1860, refs #1634

rossmckelvie commented 4 months ago

Thank you for making this fix, happy to share it's working for us. We deployed this fix to production today and its resolved hangups we were seeing on fwrite() leading to requests taking 10+ seconds.

eerison commented 1 month ago

Hello @Seldaek

as it was found on version 2.x, couldn't it be released on version 2.x? this way we could still have this issue solved on php 8.0 and 8.2, and make a smooth php upgrade :)

Edit: I just saw there is a PR for 2.x :)

Seldaek commented 1 month ago

There is https://github.com/Seldaek/monolog/pull/1882 for 2.x, but the problem is nobody has confirmed this fixes anything for them so far, so I'd rather not merge this for nothing as it does introduce overhead for everyone.

ChipZ91 commented 1 month ago

Unfortunately we have the same error despite the change.

ivanmartinvalle commented 1 month ago

For reference this is how we applied the workaround directly without needing upstream changes. The project in question is on monolog 1.

class ClosingStreamHandler extends StreamHandler
{
    protected function streamWrite($stream, array $record)
    {
        parent::streamWrite($stream, $record);

        // https://github.com/Seldaek/monolog/pull/1883
        parent::close();
    }
}
ChipZ91 commented 1 month ago

I have to correct myself. Unfortunately, we have the error twice in our system. Once through monolog and once via symfony/process.

I can confirm that the fix here fixes the monolog case.

Thank you for the work and @ivanmartinvalle for the information that helped me understand our case.