first commit
This commit is contained in:
88
lib/Log/LogFactory.php
Normal file
88
lib/Log/LogFactory.php
Normal 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();
|
||||
31
lib/Log/LogFactoryInterface.php
Normal file
31
lib/Log/LogFactoryInterface.php
Normal 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);
|
||||
|
||||
}
|
||||
59
lib/Log/MonoLogFactory.php
Normal file
59
lib/Log/MonoLogFactory.php
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
38
lib/Log/NullLogFactory.php
Normal file
38
lib/Log/NullLogFactory.php
Normal 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();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user