Browse Source

Allow the user to define a custom mode when `fopen`-ing a log file (#1913)

* Allow the user to define a custom mode when `fopen`-ing a log file

* Undo unnecessary changes

---------

Co-authored-by: Jordi Boggiano <j.boggiano@seld.be>
Pedro Peixoto 1 năm trước cách đây
mục cha
commit
8ae546b2b9
1 tập tin đã thay đổi với 6 bổ sung2 xóa
  1. 6 2
      src/Monolog/Handler/StreamHandler.php

+ 6 - 2
src/Monolog/Handler/StreamHandler.php

@@ -41,6 +41,8 @@ class StreamHandler extends AbstractProcessingHandler
     protected $filePermission;
     /** @var bool */
     protected $useLocking;
+	/** @var string */
+    protected $fileOpenMode;
     /** @var true|null */
     private $dirCreated = null;
 
@@ -48,10 +50,11 @@ class StreamHandler extends AbstractProcessingHandler
      * @param resource|string $stream         If a missing path can't be created, an UnexpectedValueException will be thrown on first write
      * @param int|null        $filePermission Optional file permissions (default (0644) are only for owner read/write)
      * @param bool            $useLocking     Try to lock log file before doing any writes
+     * @param string          $fileOpenMode   The fopen() mode used when opening a file, if $stream is a file path
      *
      * @throws \InvalidArgumentException If stream is not a resource or string
      */
-    public function __construct($stream, $level = Logger::DEBUG, bool $bubble = true, ?int $filePermission = null, bool $useLocking = false)
+    public function __construct($stream, $level = Logger::DEBUG, bool $bubble = true, ?int $filePermission = null, bool $useLocking = false, $fileOpenMode = 'a')
     {
         parent::__construct($level, $bubble);
 
@@ -78,6 +81,7 @@ class StreamHandler extends AbstractProcessingHandler
             throw new \InvalidArgumentException('A stream must either be a resource or a string.');
         }
 
+        $this->fileOpenMode = $fileOpenMode;
         $this->filePermission = $filePermission;
         $this->useLocking = $useLocking;
     }
@@ -138,7 +142,7 @@ class StreamHandler extends AbstractProcessingHandler
                 return $this->customErrorHandler(...$args);
             });
             try {
-                $stream = fopen($url, 'a');
+                $stream = fopen($url, $this->fileOpenMode);
                 if ($this->filePermission !== null) {
                     @chmod($url, $this->filePermission);
                 }