Skip to content

Conversation

@mvsvolkov
Copy link

Adding Laravel 10 compatibility for logger processors configuration

https://laravel.com/docs/10.x/logging#monolog-processors

Original code can by found here:

https://github.com/illuminate/log/blob/cf040cfddc30d5746554f173fc9c1f535077af45/LogManager.php#L409

@hedii
Copy link
Owner

hedii commented Jan 29, 2024

Hello, thanks for this PR.

Can you explain briefly what is the purpose of the options (with) when configuring processors?

Maybe you can share a Processor you are using with my package that can benefit from defining options?

@mvsvolkov
Copy link
Author

Hello, thanks for this PR.

Can you explain briefly what is the purpose of the options (with) when configuring processors?

Maybe you can share a Processor you are using with my package that can benefit from defining options?

Hello, this is a parameters for Processor construct method.

  • Processor can use another services, and when you create it with Container, they can be automatically injected
  • Processor can have some configuration, that you can set with with configuration for constructor

For example https://github.com/Seldaek/monolog/blob/main/src/Monolog/Processor/MemoryProcessor.php this processor have two options, and with with config, you can override them

[
    'processor' => Monolog\Processor\MemoryUsageProcessor::class,
    'with' => ['useFormatting' => env('USE_FORMATTING_MEMORY', false)]
]

In our cases Graylog has limitation for context item size, we have to split it into the chunks to avoid missed message parts. We use constructor parameters to define size of this chunks

'processors' => [
        ...,
        [
            'processor' => GraylogContextFragmentationProcessor::class,
            'with' => [
                'contextChunkSize' => env('GRAYLOG_CONTEXT_CHUNK_SIZE', 25),
            ],
        ],
    ],

@hedii
Copy link
Owner

hedii commented Jan 29, 2024

Ok thanks.

Can I see your GraylogContextFragmentationProcessor::class to fully understand and write a test for this new feature?

@mvsvolkov
Copy link
Author

mvsvolkov commented Jan 29, 2024

Ok thanks.

Can I see your GraylogContextFragmentationProcessor::class to fully understand and write a test for this new feature?

This class has a lot of project specific code =)

For example, i add feature to existing RequestIdProcessor, for change recorder field name, and add test to it.

[
    'processor' => \Hedii\LaravelGelfLogger\Processors\RenameIdFieldProcessor::class,
    'with' => [
        'fieldName' => '_other_id',
    ],
],

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants