Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/cakephp/src/Log/Engine/BaseLog.php
<?php
/**
 * CakePHP(tm) :  Rapid Development Framework (https://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 * @link          https://cakefoundation.org CakePHP(tm) Project
 * @since         2.2.0
 * @license       https://opensource.org/licenses/mit-license.php MIT License
 */
namespace Cake\Log\Engine;

use
Cake\Core\InstanceConfigTrait;
use
Cake\Datasource\EntityInterface;
use
JsonSerializable;
use
Psr\Log\AbstractLogger;

/**
 * Base log engine class.
 */
abstract class BaseLog extends AbstractLogger
{
    use
InstanceConfigTrait;

   
/**
     * Default config for this class
     *
     * @var array
     */
   
protected $_defaultConfig = [
       
'levels' => [],
       
'scopes' => [],
    ];

   
/**
     * __construct method
     *
     * @param array $config Configuration array
     */
   
public function __construct(array $config = [])
    {
       
$this->setConfig($config);

        if (!
is_array($this->_config['scopes']) && $this->_config['scopes'] !== false) {
           
$this->_config['scopes'] = (array)$this->_config['scopes'];
        }

        if (!
is_array($this->_config['levels'])) {
           
$this->_config['levels'] = (array)$this->_config['levels'];
        }

        if (!empty(
$this->_config['types']) && empty($this->_config['levels'])) {
           
$this->_config['levels'] = (array)$this->_config['types'];
        }
    }

   
/**
     * Get the levels this logger is interested in.
     *
     * @return array
     */
   
public function levels()
    {
        return
$this->_config['levels'];
    }

   
/**
     * Get the scopes this logger is interested in.
     *
     * @return array|false
     */
   
public function scopes()
    {
        return
$this->_config['scopes'];
    }

   
/**
     * Converts to string the provided data so it can be logged. The context
     * can optionally be used by log engines to interpolate variables
     * or add additional info to the logged message.
     *
     * @param mixed $data The data to be converted to string and logged.
     * @param array $context Additional logging information for the message.
     * @return string
     */
   
protected function _format($data, array $context = [])
    {
        if (
is_string($data)) {
            return
$data;
        }

       
$isObject = is_object($data);

        if (
$isObject && $data instanceof EntityInterface) {
            return
json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
        }

        if (
$isObject && method_exists($data, '__toString')) {
            return (string)
$data;
        }

        if (
$isObject && $data instanceof JsonSerializable) {
            return
json_encode($data, JSON_UNESCAPED_UNICODE);
        }

        return
print_r($data, true);
    }
}