first commit

This commit is contained in:
2024-04-01 09:54:43 +08:00
commit 899d816bc3
795 changed files with 130040 additions and 0 deletions

88
lib/Log/LogFactory.php Normal file
View File

@@ -0,0 +1,88 @@
<?php
namespace Yeepay\Yop\Sdk\Log;
use Psr\Log\LoggerInterface;
/**
* The global LogFactory for the SDK.
*/
class LogFactory
{
/**
* @var LogFactoryInterface the LogFactory instance
*/
private static $instance;
private static $logLevel;
private static $logLevelMapping;
public static function __init()
{
LogFactory::$instance = new NullLogFactory();
LogFactory::$logLevelMapping = [
'emergency' => 0,
'alert' => 1,
'critical' => 2,
'error' => 3,
'warning' => 4,
'notice' => 5,
'info' => 6,
'debug' => 7,
];
LogFactory::$logLevel = 6;
}
/**
* @param LogFactoryInterface $logFactory the logFactory interface.
* @throws \InvalidArgumentException if $logFactory is null.
*/
public static function setInstance(LogFactoryInterface $logFactory)
{
if ($logFactory === null) {
throw new \InvalidArgumentException(
'$logFactory should not be null.'
);
}
LogFactory::$instance = $logFactory;
}
/**
* @param string $logLevel the log level. The value can be 'emergency',
* 'alert', 'critical', 'error', 'warning', 'notice', 'info', or
* 'debug'.
* @throws \InvalidArgumentException if no such a log level is defined.
*/
public static function setLogLevel($logLevel)
{
if (isset(LogFactory::$logLevelMapping[$logLevel])) {
LogFactory::$logLevel = LogFactory::$logLevelMapping[$logLevel];
} else {
throw new \InvalidArgumentException(
"Unrecognized log level $logLevel"
);
}
}
/**
* @return boolean true if the debug log level is enabled.
*/
public static function isDebugEnabled()
{
return LogFactory::$logLevel >= 7;
}
/**
* @param $name string the name of logger
* @return LoggerInterface the Logger instance
*/
public static function getLogger($name)
{
return LogFactory::$instance->getLogger($name);
}
}
LogFactory::__init();

View File

@@ -0,0 +1,31 @@
<?php
/*
* Copyright 2014 Baidu, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace Yeepay\Yop\Sdk\Log;
use Psr\Log\LoggerInterface;
interface LogFactoryInterface
{
/**
* @param $name string
* @return LoggerInterface
*/
public function getLogger($name);
}

View File

@@ -0,0 +1,59 @@
<?php
/*
* Copyright 2014 Baidu, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace Yeepay\Yop\Sdk\Log;
use Monolog\Logger;
/**
* A LogFactory for Monolog.
*/
class MonoLogFactory implements LogFactoryInterface
{
/**
* @var array
*/
private $handlers;
/**
* Constructs a new MonoLogFactory instance.
* @param array $handlers log handlers
*/
public function __construct(array $handlers = null)
{
$this->handlers = $handlers;
}
/**
* Returns \Monolog\Logger.
* @param string $name the name of logger
* @return \Monolog\Logger a monolog logger instance
*/
public function getLogger($name)
{
$logger = new Logger($name);
if ($this->handlers !== null) {
foreach ($this->handlers as $handler) {
$logger->pushHandler($handler);
}
}
return $logger;
}
}

View File

@@ -0,0 +1,38 @@
<?php
/*
* Copyright 2014 Baidu, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
namespace Yeepay\Yop\Sdk\Log;
use Psr\Log\NullLogger;
/**
* A LogFactory that returns a NullLogger.
*/
class NullLogFactory implements LogFactoryInterface
{
/**
* Always returns a NullLogger.
* @param string $name the name of logger
* @return Psr\Log\NullLogger a NullLogger
*/
public function getLogger($name)
{
return new NullLogger();
}
}