404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.14.150.131: ~ $
<?php

/*
 * This file is part of the Monolog package.
 *
 * (c) Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Monolog\Handler;

use Monolog\Logger;

/**
 * Stores logs to files that are rotated every day and a limited number of files are kept.
 *
 * This rotation is only intended to be used as a workaround. Using logrotate to
 * handle the rotation is strongly encouraged when you can use it.
 *
 * @author Christophe Coevoet <stof@notk.org>
 * @author Jordi Boggiano <j.boggiano@seld.be>
 */
class RotatingFileHandler extends StreamHandler
{
    const FILE_PER_DAY = 'Y-m-d';
    const FILE_PER_MONTH = 'Y-m';
    const FILE_PER_YEAR = 'Y';

    protected $filename;
    protected $maxFiles;
    protected $mustRotate;
    protected $nextRotation;
    protected $filenameFormat;
    protected $dateFormat;

    /**
     * @param string   $filename
     * @param int      $maxFiles       The maximal amount of files to keep (0 means unlimited)
     * @param int      $level          The minimum logging level at which this handler will be triggered
     * @param bool     $bubble         Whether the messages that are handled can bubble up the stack or not
     * @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
     */
    public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
    {
        $this->filename = $filename;
        $this->maxFiles = (int) $maxFiles;
        $this->nextRotation = new \DateTime('tomorrow');
        $this->filenameFormat = '{filename}-{date}';
        $this->dateFormat = 'Y-m-d';

        parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking);
    }

    /**
     * {@inheritdoc}
     */
    public function close()
    {
        parent::close();

        if (true === $this->mustRotate) {
            $this->rotate();
        }
    }

    /**
     * {@inheritdoc}
     */
    public function reset()
    {
        parent::reset();

        if (true === $this->mustRotate) {
            $this->rotate();
        }
    }

    public function setFilenameFormat($filenameFormat, $dateFormat)
    {
        if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) {
            trigger_error(
                'Invalid date format - format must be one of '.
                'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '.
                'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '.
                'date formats using slashes, underscores and/or dots instead of dashes.',
                E_USER_DEPRECATED
            );
        }
        if (substr_count($filenameFormat, '{date}') === 0) {
            trigger_error(
                'Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.',
                E_USER_DEPRECATED
            );
        }
        $this->filenameFormat = $filenameFormat;
        $this->dateFormat = $dateFormat;
        $this->url = $this->getTimedFilename();
        $this->close();
    }

    /**
     * {@inheritdoc}
     */
    protected function write(array $record)
    {
        // on the first record written, if the log is new, we should rotate (once per day)
        if (null === $this->mustRotate) {
            $this->mustRotate = !file_exists($this->url);
        }

        if ($this->nextRotation < $record['datetime']) {
            $this->mustRotate = true;
            $this->close();
        }

        parent::write($record);
    }

    /**
     * Rotates the files.
     */
    protected function rotate()
    {
        // update filename
        $this->url = $this->getTimedFilename();
        $this->nextRotation = new \DateTime('tomorrow');

        // skip GC of old logs if files are unlimited
        if (0 === $this->maxFiles) {
            return;
        }

        $logFiles = glob($this->getGlobPattern());
        if ($this->maxFiles >= count($logFiles)) {
            // no files to remove
            return;
        }

        // Sorting the files by name to remove the older ones
        usort($logFiles, function ($a, $b) {
            return strcmp($b, $a);
        });

        foreach (array_slice($logFiles, $this->maxFiles) as $file) {
            if (is_writable($file)) {
                // suppress errors here as unlink() might fail if two processes
                // are cleaning up/rotating at the same time
                set_error_handler(function ($errno, $errstr, $errfile, $errline) {});
                unlink($file);
                restore_error_handler();
            }
        }

        $this->mustRotate = false;
    }

    protected function getTimedFilename()
    {
        $fileInfo = pathinfo($this->filename);
        $timedFilename = str_replace(
            array('{filename}', '{date}'),
            array($fileInfo['filename'], date($this->dateFormat)),
            $fileInfo['dirname'] . '/' . $this->filenameFormat
        );

        if (!empty($fileInfo['extension'])) {
            $timedFilename .= '.'.$fileInfo['extension'];
        }

        return $timedFilename;
    }

    protected function getGlobPattern()
    {
        $fileInfo = pathinfo($this->filename);
        $glob = str_replace(
            array('{filename}', '{date}'),
            array($fileInfo['filename'], '[0-9][0-9][0-9][0-9]*'),
            $fileInfo['dirname'] . '/' . $this->filenameFormat
        );
        if (!empty($fileInfo['extension'])) {
            $glob .= '.'.$fileInfo['extension'];
        }

        return $glob;
    }
}

Filemanager

Name Type Size Permission Actions
Curl Folder 0755
FingersCrossed Folder 0755
Slack Folder 0755
SyslogUdp Folder 0755
AbstractHandler.php File 4.28 KB 0644
AbstractProcessingHandler.php File 1.5 KB 0644
AbstractSyslogHandler.php File 3.29 KB 0644
AmqpHandler.php File 3.78 KB 0644
BrowserConsoleHandler.php File 7.21 KB 0644
BufferHandler.php File 3.58 KB 0644
ChromePHPHandler.php File 5.48 KB 0644
CouchDBHandler.php File 1.91 KB 0644
CubeHandler.php File 4.52 KB 0644
DeduplicationHandler.php File 5.35 KB 0644
DoctrineCouchDBHandler.php File 1000 B 0644
DynamoDbHandler.php File 2.38 KB 0644
ElasticSearchHandler.php File 3.33 KB 0644
ErrorLogHandler.php File 2.31 KB 0644
FilterHandler.php File 4.32 KB 0644
FingersCrossedHandler.php File 5.77 KB 0644
FirePHPHandler.php File 5.33 KB 0644
FleepHookHandler.php File 3.28 KB 0644
FlowdockHandler.php File 3.28 KB 0644
GelfHandler.php File 1.91 KB 0644
GroupHandler.php File 2.69 KB 0644
HandlerInterface.php File 2.53 KB 0644
HandlerWrapper.php File 2.31 KB 0644
HipChatHandler.php File 10.51 KB 0644
IFTTTHandler.php File 2.06 KB 0644
InsightOpsHandler.php File 1.83 KB 0644
LogEntriesHandler.php File 1.58 KB 0644
LogglyHandler.php File 2.56 KB 0644
MailHandler.php File 1.58 KB 0644
MandrillHandler.php File 2.11 KB 0644
MissingExtensionException.php File 450 B 0644
MongoDBHandler.php File 1.57 KB 0644
NativeMailerHandler.php File 5.08 KB 0644
NewRelicHandler.php File 6.06 KB 0644
NullHandler.php File 953 B 0644
PHPConsoleHandler.php File 9.76 KB 0644
PsrHandler.php File 1.4 KB 0644
PushoverHandler.php File 6.47 KB 0644
RavenHandler.php File 6.96 KB 0644
RedisHandler.php File 2.82 KB 0644
RollbarHandler.php File 3.85 KB 0644
RotatingFileHandler.php File 5.75 KB 0644
SamplingHandler.php File 2.61 KB 0644
SlackHandler.php File 6.3 KB 0644
SlackWebhookHandler.php File 3.73 KB 0644
SlackbotHandler.php File 1.98 KB 0644
SocketHandler.php File 9.58 KB 0644
StreamHandler.php File 5.1 KB 0644
SwiftMailerHandler.php File 3.36 KB 0644
SyslogHandler.php File 1.8 KB 0644
SyslogUdpHandler.php File 2.51 KB 0644
TestHandler.php File 5.01 KB 0644
WhatFailureGroupHandler.php File 1.76 KB 0644
ZendMonitorHandler.php File 2.19 KB 0644