Skip to content

Commit e36f2eb

Browse files
committed
Merge branch '6.4' into 7.3
* 6.4: Minor tweaks [MonologBundle] Document handler `priority` option
2 parents 9420b24 + 0ff24c1 commit e36f2eb

File tree

1 file changed

+65
-6
lines changed

1 file changed

+65
-6
lines changed

logging.rst

Lines changed: 65 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -179,15 +179,74 @@ to write logs using the :phpfunction:`syslog` function:
179179
->level(LogLevel::ERROR);
180180
};
181181
182-
This defines a *stack* of handlers and each handler is called in the order that it's
183-
defined.
182+
This defines a stack of handlers. Each handler can define a ``priority``
183+
(default ``0``) to control its position in the stack. Handlers with a higher
184+
priority are called first, while those with the same priority keep the order in
185+
which they are defined:
186+
187+
.. configuration-block::
188+
189+
.. code-block:: yaml
190+
191+
# config/packages/prod/monolog.yaml
192+
monolog:
193+
handlers:
194+
file_log:
195+
type: stream
196+
path: "%kernel.logs_dir%/%kernel.environment%.log"
197+
198+
syslog_handler:
199+
type: syslog
200+
priority: 10 # called first
201+
202+
.. code-block:: xml
203+
204+
<!-- config/packages/prod/monolog.xml -->
205+
<?xml version="1.0" encoding="UTF-8" ?>
206+
<container xmlns="http://symfony.com/schema/dic/services"
207+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
208+
xmlns:monolog="http://symfony.com/schema/dic/monolog"
209+
xsi:schemaLocation="http://symfony.com/schema/dic/services
210+
https://symfony.com/schema/dic/services/services-1.0.xsd
211+
http://symfony.com/schema/dic/monolog
212+
https://symfony.com/schema/dic/monolog/monolog-1.0.xsd">
213+
214+
<monolog:config>
215+
<monolog:handler name="file_log"
216+
type="stream"
217+
path="%kernel.logs_dir%/%kernel.environment%.log"
218+
/>
219+
220+
<!-- called first -->
221+
<monolog:handler name="syslog_handler"
222+
type="syslog"
223+
priority="10"
224+
/>
225+
</monolog:config>
226+
</container>
227+
228+
.. code-block:: php
229+
230+
// config/packages/prod/monolog.php
231+
use Psr\Log\LogLevel;
232+
use Symfony\Config\MonologConfig;
233+
234+
return static function (MonologConfig $monolog): void {
235+
$monolog->handler('file_log')
236+
->type('stream')
237+
->path('%kernel.logs_dir%/%kernel.environment%.log')
238+
;
239+
240+
$monolog->handler('syslog_handler')
241+
->type('syslog')
242+
->priority(10) // called first
243+
;
244+
};
184245
185246
.. note::
186247

187-
If you want to override the ``monolog`` configuration via another config
188-
file, you will need to redefine the entire ``handlers`` stack. The configuration
189-
from the two files cannot be merged because the order matters and a merge does
190-
not allow you to control the order.
248+
When adding handlers in other configuration files, it's recommended to set
249+
an explicit priority to ensure they are ordered as expected.
191250

192251
.. _logging-handler-fingers_crossed:
193252

0 commit comments

Comments
 (0)