@@ -138,23 +138,22 @@ to write logs using the :phpfunction:`syslog` function:
138
138
.. code-block :: php
139
139
140
140
// 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
+ };
158
157
159
158
This defines a *stack * of handlers and each handler is called in the order that it's
160
159
defined.
@@ -236,29 +235,29 @@ one of the messages reaches an ``action_level``. Take this example:
236
235
.. code-block :: php
237
236
238
237
// 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
+ } ;
262
261
263
262
Now, if even one log entry has an ``error `` level or higher, then *all * log entries
264
263
for 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``:
331
330
.. code-block :: php
332
331
333
332
// 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
+ };
346
344
347
345
Using a Logger inside a Service
348
346
-------------------------------
0 commit comments