1<?php declare(strict_types=1);
2
3/*
4 * This file is part of the Monolog package.
5 *
6 * (c) Jordi Boggiano <j.boggiano@seld.be>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Monolog\Attribute;
13
14/**
15 * A reusable attribute to help configure a class or a method as a processor.
16 *
17 * Using it offers no guarantee: it needs to be leveraged by a Monolog third-party consumer.
18 *
19 * Using it with the Monolog library only has no effect at all: processors should still be turned into a callable if
20 * needed and manually pushed to the loggers and to the processable handlers.
21 */
22#[\Attribute(\Attribute::TARGET_CLASS | \Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)]
23class AsMonologProcessor
24{
25    /** @var string|null */
26    public $channel = null;
27    /** @var string|null */
28    public $handler = null;
29    /** @var string|null */
30    public $method = null;
31
32    /**
33     * @param string|null $channel  The logging channel the processor should be pushed to.
34     * @param string|null $handler  The handler the processor should be pushed to.
35     * @param string|null $method   The method that processes the records (if the attribute is used at the class level).
36     */
37    public function __construct(
38        ?string $channel = null,
39        ?string $handler = null,
40        ?string $method = null
41    ) {
42        $this->channel = $channel;
43        $this->handler = $handler;
44        $this->method = $method;
45    }
46}
47