You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/lib/aliyun-log-php-sdk-master/Aliyun/Log/LoggerFactory.php

70 lines
2.1 KiB
PHP

<?php
/**
* Copyright (C) Alibaba Cloud Computing
* All rights reserved
*/
/**
* Class Aliyun_Log_LoggerFactory
* Factory for creating logger instance, with $client, $project, $logstore, $topic configurable.
* Will flush current logger when the factory instance was recycled.
*/
class Aliyun_Log_LoggerFactory{
private static $loggerMap = array();
/**
* Get logger instance
* @param $client valid log client
* @param $project which could be created in AliYun Logger Server configuration page
* @param $logstore which could be created in AliYun Logger Server configuration page
* @param null $topic used to specified the log by TOPIC field
* @return mixed return logger instance
* @throws Exception if the input parameter is invalid, throw exception
*/
public static function getLogger($client, $project, $logstore, $topic = null){
if($project === null || $project == ''){
throw new Exception('project name is blank!');
}
if($logstore === null || $logstore == ''){
throw new Exception('logstore name is blank!');
}
if($topic === null){
$topic = '';
}
$loggerKey = $project.'#'.$logstore.'#'.$topic;
if (!array_key_exists($loggerKey, static::$loggerMap))
{
$instanceSimpleLogger = new Aliyun_Log_SimpleLogger($client,$project,$logstore,$topic);
static::$loggerMap[$loggerKey] = $instanceSimpleLogger;
}
return static::$loggerMap[$loggerKey];
}
/**
* set modifier to protected for singleton pattern
* Aliyun_Log_LoggerFactory constructor.
*/
protected function __construct()
{
}
/**
* set clone function to private for singleton pattern
*/
private function __clone()
{}
/**
* flush current logger in destruct function
*/
function __destruct() {
if(static::$loggerMap != null){
foreach (static::$loggerMap as $innerLogger){
$innerLogger->logFlush();
}
}
}
}