/var/www/vhosts/ihelp.ro/httpdocs/vendor/monolog/monolog/src/Monolog/Handler
NameSizeModeActions
Curl/-0755rm
FingersCrossed/-0755rm
Slack/-0755rm
SyslogUdp/-0755rm
AbstractHandler.php26370644editdlrm
AbstractProcessingHandler.php14990644editdlrm
AbstractSyslogHandler.php32210644editdlrm
AmqpHandler.php48130644editdlrm
BrowserConsoleHandler.php92370644editdlrm
BufferHandler.php45460644editdlrm
ChromePHPHandler.php51370644editdlrm
CouchDBHandler.php26100644editdlrm
CubeHandler.php54380644editdlrm
DeduplicationHandler.php59420644editdlrm
DoctrineCouchDBHandler.php11500644editdlrm
DynamoDbHandler.php19340644editdlrm
ElasticaHandler.php36700644editdlrm
ElasticsearchHandler.php69530644editdlrm
ErrorLogHandler.php26760644editdlrm
FallbackGroupHandler.php16720644editdlrm
FilterHandler.php71180644editdlrm
FingersCrossedHandler.php82010644editdlrm
FirePHPHandler.php51530644editdlrm
FleepHookHandler.php35230644editdlrm
FlowdockHandler.php34800644editdlrm
FormattableHandlerInterface.php7570644editdlrm
FormattableHandlerTrait.php12680644editdlrm
GelfHandler.php14540644editdlrm
GroupHandler.php32220644editdlrm
Handler.php12430644editdlrm
HandlerInterface.php27860644editdlrm
HandlerWrapper.php33550644editdlrm
IFTTTHandler.php22680644editdlrm
InsightOpsHandler.php20870644editdlrm
LogEntriesHandler.php19060644editdlrm
LogglyHandler.php40870644editdlrm
LogmaticHandler.php26330644editdlrm
MailHandler.php22450644editdlrm
MandrillHandler.php25340644editdlrm
MissingExtensionException.php4730644editdlrm
MongoDBHandler.php23640644editdlrm
NativeMailerHandler.php48970644editdlrm
NewRelicHandler.php58310644editdlrm
NoopHandler.php9080644editdlrm
NullHandler.php13310644editdlrm
OverflowHandler.php43090644editdlrm
PHPConsoleHandler.php122090644editdlrm
ProcessableHandlerInterface.php11850644editdlrm
ProcessableHandlerTrait.php16180644editdlrm
ProcessHandler.php51790644editdlrm
PsrHandler.php23550644editdlrm
PushoverHandler.php80570644editdlrm
RedisHandler.php27410644editdlrm
RedisPubSubHandler.php16830644editdlrm
RollbarHandler.php36010644editdlrm
RotatingFileHandler.php69330644editdlrm
SamplingHandler.php39100644editdlrm
SendGridHandler.php29360644editdlrm
SlackHandler.php69300644editdlrm
SlackWebhookHandler.php39880644editdlrm
SocketHandler.php119950644editdlrm
SqsHandler.php17480644editdlrm
StreamHandler.php65640644editdlrm
SymfonyMailerHandler.php35490644editdlrm
SyslogHandler.php17060644editdlrm
SyslogUdpHandler.php47060644editdlrm
TelegramBotHandler.php89820644editdlrm
TestHandler.php64620644editdlrm
WebRequestRecognizerTrait.php5040644editdlrm
WhatFailureGroupHandler.php18630644editdlrm
ZendMonitorHandler.php28500644editdlrm
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php (6564B)
* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Monolog\Handler; use Monolog\Level; use Monolog\Utils; use Monolog\LogRecord; /** * Stores to any stream resource * * Can be used to store into php://stderr, remote and local files, etc. * * @author Jordi Boggiano */ class StreamHandler extends AbstractProcessingHandler { protected const MAX_CHUNK_SIZE = 2147483647; /** 10MB */ protected const DEFAULT_CHUNK_SIZE = 10 * 1024 * 1024; protected int $streamChunkSize; /** @var resource|null */ protected $stream; protected string|null $url = null; private string|null $errorMessage = null; protected int|null $filePermission; protected bool $useLocking; /** @var true|null */ private bool|null $dirCreated = null; /** * @param resource|string $stream If a missing path can't be created, an UnexpectedValueException will be thrown on first write * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) * @param bool $useLocking Try to lock log file before doing any writes * * @throws \InvalidArgumentException If stream is not a resource or string */ public function __construct($stream, int|string|Level $level = Level::Debug, bool $bubble = true, ?int $filePermission = null, bool $useLocking = false) { parent::__construct($level, $bubble); if (($phpMemoryLimit = Utils::expandIniShorthandBytes(ini_get('memory_limit'))) !== false) { if ($phpMemoryLimit > 0) { // use max 10% of allowed memory for the chunk size, and at least 100KB $this->streamChunkSize = min(static::MAX_CHUNK_SIZE, max((int) ($phpMemoryLimit / 10), 100 * 1024)); } else { // memory is unlimited, set to the default 10MB $this->streamChunkSize = static::DEFAULT_CHUNK_SIZE; } } else { // no memory limit information, set to the default 10MB $this->streamChunkSize = static::DEFAULT_CHUNK_SIZE; } if (is_resource($stream)) { $this->stream = $stream; stream_set_chunk_size($this->stream, $this->streamChunkSize); } elseif (is_string($stream)) { $this->url = Utils::canonicalizePath($stream); } else { throw new \InvalidArgumentException('A stream must either be a resource or a string.'); } $this->filePermission = $filePermission; $this->useLocking = $useLocking; } /** * @inheritDoc */ public function close(): void { if (null !== $this->url && is_resource($this->stream)) { fclose($this->stream); } $this->stream = null; $this->dirCreated = null; } /** * Return the currently active stream if it is open * * @return resource|null */ public function getStream() { return $this->stream; } /** * Return the stream URL if it was configured with a URL and not an active resource */ public function getUrl(): ?string { return $this->url; } public function getStreamChunkSize(): int { return $this->streamChunkSize; } /** * @inheritDoc */ protected function write(LogRecord $record): void { if (!is_resource($this->stream)) { $url = $this->url; if (null === $url || '' === $url) { throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().' . Utils::getRecordMessageForException($record)); } $this->createDir($url); $this->errorMessage = null; set_error_handler([$this, 'customErrorHandler']); $stream = fopen($url, 'a'); if ($this->filePermission !== null) { @chmod($url, $this->filePermission); } restore_error_handler(); if (!is_resource($stream)) { $this->stream = null; throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened in append mode: '.$this->errorMessage, $url) . Utils::getRecordMessageForException($record)); } stream_set_chunk_size($stream, $this->streamChunkSize); $this->stream = $stream; } $stream = $this->stream; if ($this->useLocking) { // ignoring errors here, there's not much we can do about them flock($stream, LOCK_EX); } $this->streamWrite($stream, $record); if ($this->useLocking) { flock($stream, LOCK_UN); } } /** * Write to stream * @param resource $stream */ protected function streamWrite($stream, LogRecord $record): void { fwrite($stream, (string) $record->formatted); } private function customErrorHandler(int $code, string $msg): bool { $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); return true; } private function getDirFromStream(string $stream): ?string { $pos = strpos($stream, '://'); if ($pos === false) { return dirname($stream); } if ('file://' === substr($stream, 0, 7)) { return dirname(substr($stream, 7)); } return null; } private function createDir(string $url): void { // Do not try to create dir if it has already been tried. if (true === $this->dirCreated) { return; } $dir = $this->getDirFromStream($url); if (null !== $dir && !is_dir($dir)) { $this->errorMessage = null; set_error_handler([$this, 'customErrorHandler']); $status = mkdir($dir, 0777, true); restore_error_handler(); if (false === $status && !is_dir($dir) && strpos((string) $this->errorMessage, 'File exists') === false) { throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and it could not be created: '.$this->errorMessage, $dir)); } } $this->dirCreated = true; } }