Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Logging/Logger.php
Строк: 180
<?php
namespace ConcreteCoreLogging;

use 
ConcreteCoreLoggingHandlerDatabaseHandler;
use 
MonologLogger as MonologLogger;
use 
MonologFormatterLineFormatter;
use 
Database;
use 
Events;
use 
Core;
use 
MonologProcessorPsrLogMessageProcessor;

class 
Logger extends MonologLogger
{

    const 
CHANNEL_APPLICATION 'application';

    public function 
__construct($channel self::CHANNEL_APPLICATION$logLevel MonologLogger::DEBUG)
    {
        
parent::__construct($channel);
        
$this->addDatabaseHandler($logLevel);
        
$this->pushProcessor(new PsrLogMessageProcessor());

        
$le = new Event($this);
        
Events::dispatch('on_logger_create'$le);
    }

    
/**
     * Initially called - this sets up the log writer to use the concrete5
     * Logs database table (this is the default setting.)
     */
    
public function addDatabaseHandler($logLevel MonologLogger::DEBUG)
    {
        
$handler = new DatabaseHandler($logLevel);
        
// set a more basic formatter.
        
$output "%message%";
        
$formatter = new LineFormatter($outputnulltrue);
        
$handler->setFormatter($formatter);
        
$this->pushHandler($handler);
    }


    
/**
     * When given a PSR-3 standard log level, returns the
     * internal code for that level.
     */
    
public static function getLevelCode($level)
    {
        
$levels = static::getLevels();
        
$level strtoupper($level);
        if (isset(
$levels[$level])) {
            return 
$levels[$level];
        }
    }

    
/**
     * Returns an array of handlers. Mostly for testing.
     */
    
public function getHandlers()
    {
        return 
$this->handlers;
    }

    
/**
     * Returns a list of channels that have been used. Requires the database
     *  handler
     */
    
public function getChannels()
    {
        
$db Database::get();
        
$channels = (array) $db->GetCol('select distinct channel from Logs order by channel asc');
        return 
$channels;
    }


    
/**
     * Clears all log entries. Requires the database handler.
     */
    
public static function clearAll()
    {
        
$db Database::get();
        
$db->Execute('delete from Logs');
    }

    
/**
     * Clears log entries by channel. Requires the database handler.
     */
    
public static function clearByChannel($channel)
    {
        
$db Database::get();
        
$db->delete('Logs', array('channel' => $channel));
    }

    
/**
     * Gets the name of the logging level.
     *
     * @param  integer $level
     * @return string
     */
    
public static function getLevelDisplayName($level)
    {
        if (
array_key_exists($level, static::$levels)) {
            switch (static::
$levels[$level]) {
                case 
'DEBUG':
                    return 
tc(/*i18n: Detailed debug information */ 'Log level''Debug');
                case 
'INFO':
                    return 
tc(/*i18n: Interesting events */ 'Log level''Info');
                case 
'NOTICE':
                    return 
tc(/*i18n: Uncommon events */ 'Log level''Notice');
                case 
'WARNING':
                    return 
tc(/*i18n: Exceptional occurrences that are not errors */ 'Log level''Warning');
                case 
'ERROR':
                    return 
tc(/*i18n: Runtime errors */ 'Log level''Error');
                case 
'CRITICAL':
                    return 
tc(/*i18n: Critical conditions */ 'Log level''Critical');
                case 
'ALERT':
                    return 
tc(/*i18n: Action must be taken immediately */ 'Log level''Alert');
                case 
'EMERGENCY':
                    return 
tc(/*i18n: Urgent alert */ 'Log level''Emergency');
            }
        }
        return 
tc(/*i18n: Urgent alert */ 'Log level'ucfirst(strtolower($level)));
    }

    public static function 
getChannelDisplayName($channel)
    {
        switch (
$channel) {
            case 
'application':
                return 
tc('Log channel''Application');
            case 
LOG_TYPE_EMAILS:
                return 
tc('Log channel''Sent Emails');
            case 
LOG_TYPE_EXCEPTIONS:
                return 
tc('Log channel''Exceptions');
            default:
                return 
tc('Log channel'Core::make('helper/text')->unhandle($channel));
        }
    }


}
Онлайн: 1
Реклама