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\Handler; 13 14/** 15 * Interface that all Monolog Handlers must implement 16 * 17 * @author Jordi Boggiano <j.boggiano@seld.be> 18 * 19 * @phpstan-import-type Record from \Monolog\Logger 20 * @phpstan-import-type Level from \Monolog\Logger 21 */ 22interface HandlerInterface 23{ 24 /** 25 * Checks whether the given record will be handled by this handler. 26 * 27 * This is mostly done for performance reasons, to avoid calling processors for nothing. 28 * 29 * Handlers should still check the record levels within handle(), returning false in isHandling() 30 * is no guarantee that handle() will not be called, and isHandling() might not be called 31 * for a given record. 32 * 33 * @param array $record Partial log record containing only a level key 34 * 35 * @return bool 36 * 37 * @phpstan-param array{level: Level} $record 38 */ 39 public function isHandling(array $record): bool; 40 41 /** 42 * Handles a record. 43 * 44 * All records may be passed to this method, and the handler should discard 45 * those that it does not want to handle. 46 * 47 * The return value of this function controls the bubbling process of the handler stack. 48 * Unless the bubbling is interrupted (by returning true), the Logger class will keep on 49 * calling further handlers in the stack with a given log record. 50 * 51 * @param array $record The record to handle 52 * @return bool true means that this handler handled the record, and that bubbling is not permitted. 53 * false means the record was either not processed or that this handler allows bubbling. 54 * 55 * @phpstan-param Record $record 56 */ 57 public function handle(array $record): bool; 58 59 /** 60 * Handles a set of records at once. 61 * 62 * @param array $records The records to handle (an array of record arrays) 63 * 64 * @phpstan-param Record[] $records 65 */ 66 public function handleBatch(array $records): void; 67 68 /** 69 * Closes the handler. 70 * 71 * Ends a log cycle and frees all resources used by the handler. 72 * 73 * Closing a Handler means flushing all buffers and freeing any open resources/handles. 74 * 75 * Implementations have to be idempotent (i.e. it should be possible to call close several times without breakage) 76 * and ideally handlers should be able to reopen themselves on handle() after they have been closed. 77 * 78 * This is useful at the end of a request and will be called automatically when the object 79 * is destroyed if you extend Monolog\Handler\Handler. 80 * 81 * If you are thinking of calling this method yourself, most likely you should be 82 * calling ResettableInterface::reset instead. Have a look. 83 */ 84 public function close(): void; 85} 86