@@ -138,23 +138,22 @@ to write logs using the :phpfunction:`syslog` function:
138138 .. code-block :: php
139139
140140 // config/packages/prod/monolog.php
141- $container->loadFromExtension('monolog', [
142- 'handlers' => [
143- // this "file_log" key could be anything
144- 'file_log' => [
145- 'type' => 'stream',
146- // log to var/logs/(environment).log
147- 'path' => '%kernel.logs_dir%/%kernel.environment%.log',
148- // log *all* messages (debug is lowest level)
149- 'level' => 'debug',
150- ],
151- 'syslog_handler' => [
152- 'type' => 'syslog',
153- // log error-level messages and higher
154- 'level' => 'error',
155- ],
156- ],
157- ]);
141+ use Symfony\Config\MonologConfig;
142+
143+ return static function (MonologConfig $monolog) {
144+ // this "file_log" key could be anything
145+ $monolog->handler('file_log')
146+ ->type('stream')
147+ // log to var/logs/(environment).log
148+ ->path('%kernel.logs_dir%/%kernel.environment%.log')
149+ // log *all* messages (debug is lowest level)
150+ ->level('debug');
151+
152+ $monolog->handler('syslog_handler')
153+ ->type('syslog')
154+ // log error-level messages and higher
155+ ->level('error');
156+ };
158157
159158 This defines a *stack * of handlers and each handler is called in the order that it's
160159defined.
@@ -236,29 +235,29 @@ one of the messages reaches an ``action_level``. Take this example:
236235 .. code-block :: php
237236
238237 // config/packages/prod/monolog.php
239- $container->loadFromExtension('monolog', [
240- 'handlers' => [
241- 'filter_for_errors' => [
242- 'type' => 'fingers_crossed',
243- // if *one* log is error or higher, pass *all* to file_log
244- 'action_level' => ' error',
245- 'handler' => 'file_log',
246- ],
247-
248- // now passed *all* logs, but only if one log is error or higher
249- 'file_log' => [
250- 'type' => 'stream',
251- 'path' => '%kernel.logs_dir%/%kernel.environment%.log',
252- 'level' => 'debug',
253- ],
254-
255- // still passed *all* logs, and still only logs error or higher
256- 'syslog_handler' => [
257- 'type' => 'syslog',
258- 'level' => 'error',
259- ],
260- ],
261- ]) ;
238+ use Symfony\Config\MonologConfig;
239+
240+ return static function (MonologConfig $monolog) {
241+ $monolog->handler('filter_for_errors')
242+ ->type('fingers_crossed')
243+ // if *one* log is error or higher, pass *all* to file_log
244+ ->actionLevel('error')
245+ ->handler('file_log')
246+ ;
247+
248+ // now passed *all* logs, but only if one log is error or higher
249+ $monolog->handler('file_log')
250+ ->type('stream')
251+ ->path('%kernel.logs_dir%/%kernel.environment%.log')
252+ ->level('debug')
253+ ;
254+
255+ // still passed *all* logs, and still only logs error or higher
256+ $monolog->handler('syslog_handler')
257+ ->type('syslog')
258+ ->level('error')
259+ ;
260+ } ;
262261
263262 Now, if even one log entry has an ``error `` level or higher, then *all * log entries
264263for that request are saved to a file via the ``file_log `` handler. That means that
@@ -331,18 +330,17 @@ option of your handler to ``rotating_file``:
331330 .. code-block :: php
332331
333332 // config/packages/prod/monolog.php
334- $container->loadFromExtension('monolog', [
335- 'handlers' => [
336- 'main' => [
337- 'type' => 'rotating_file',
338- 'path' => '%kernel.logs_dir%/%kernel.environment%.log',
339- 'level' => 'debug',
340- // max number of log files to keep
341- // defaults to zero, which means infinite files
342- 'max_files' => 10,
343- ],
344- ],
345- ]);
333+ use Symfony\Config\MonologConfig;
334+
335+ return static function (MonologConfig $monolog) {
336+ $monolog->handler('main')
337+ ->type('rotating_file')
338+ ->path('%kernel.logs_dir%/%kernel.environment%.log')
339+ ->level('debug')
340+ // max number of log files to keep
341+ // defaults to zero, which means infinite files
342+ ->maxFiles(10);
343+ };
346344
347345 Using a Logger inside a Service
348346-------------------------------
0 commit comments