Skip to content

Commit e8507f1

Browse files
authored
Merge pull request #21 from ucloud/feat/dependency-update
add psr/log v3 compatibility
2 parents 312f371 + 75207a3 commit e8507f1

File tree

7 files changed

+90
-21
lines changed

7 files changed

+90
-21
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
use Psr\Log\LoggerInterface;
4+
use Psr\Log\AbstractLogger;
5+
6+
class DefaultLoggerPsrLogV1 extends AbstractLogger implements LoggerInterface
7+
{
8+
public function log($level, $message, array $context = [])
9+
{
10+
$line = $level . " " . $message;
11+
if (!empty($context)) {
12+
$line = " " . json_encode($context, JSON_PRETTY_PRINT);
13+
}
14+
echo $line . "\n";
15+
}
16+
}
17+
18+
class_alias("DefaultLoggerPsrLogV1", "UCloud\Core\Logger\DefaultLogger");
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
use Psr\Log\LoggerInterface;
4+
use Psr\Log\AbstractLogger;
5+
6+
class DefaultLoggerPsrLogV3 extends AbstractLogger implements LoggerInterface
7+
{
8+
public function log(
9+
$level,
10+
string|\Stringable $message,
11+
array $context = []
12+
): void {
13+
$line = $level . " " . $message;
14+
if (!empty($context)) {
15+
$line = " " . json_encode($context, JSON_PRETTY_PRINT);
16+
}
17+
echo $line . "\n";
18+
}
19+
}
20+
21+
class_alias("DefaultLoggerPsrLogV3", "UCloud\Core\Logger\DefaultLogger");
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
use Psr\Log\LoggerInterface;
4+
use Psr\Log\AbstractLogger;
5+
6+
class DisabledLoggerPsrLogV1 extends AbstractLogger implements LoggerInterface
7+
{
8+
public function log($level, $message, array $context = [])
9+
{
10+
// Do nothing
11+
}
12+
}
13+
14+
class_alias("DisabledLoggerPsrLogV1", "UCloud\Core\Logger\DisabledLogger");
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
use Psr\Log\LoggerInterface;
4+
use Psr\Log\AbstractLogger;
5+
6+
class DisabledLoggerPsrLogV3 extends AbstractLogger implements LoggerInterface
7+
{
8+
public function log(
9+
$level,
10+
string|\Stringable $message,
11+
array $context = []
12+
): void {
13+
// Do nothing
14+
}
15+
}
16+
17+
class_alias("DisabledLoggerPsrLogV3", "UCloud\Core\Logger\DisabledLogger");

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
"authors": [
99
{
1010
"name": "ucloud",
11-
"email": "yufei.li@ucloud.cn"
11+
"email": "renzheng.wang@ucloud.cn"
1212
}
1313
],
1414
"require": {
1515
"php": ">=5.6",
1616
"guzzlehttp/guzzle": "^6.2.1|^7.0",
17-
"psr/log": "^1.1"
17+
"psr/log": "^1.1 || v3.0"
1818
},
1919
"require-dev": {
2020
"phpunit/phpunit": "^9.0",

src/Core/Logger/DefaultLogger.php

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@
22

33
namespace UCloud\Core\Logger;
44

5-
use Psr\Log\LoggerInterface;
6-
use Psr\Log\AbstractLogger;
5+
use ReflectionMethod;
76

8-
class DefaultLogger extends AbstractLogger implements LoggerInterface
9-
{
10-
public function log($level, $message, array $context = [])
11-
{
12-
$line = $level . " " . $message;
13-
if (!empty($context)) {
14-
$line = " " . json_encode($context, JSON_PRETTY_PRINT);
15-
}
16-
echo $line . "\n";
7+
$logMethodReflection = new ReflectionMethod("Psr\Log\AbstractLogger", "log");
8+
if (version_compare(PHP_VERSION, '8.0.0', '<')) {
9+
include "compatibility/DefaultLoggerPsrLogV1.php";
10+
} else {
11+
if ($logMethodReflection->hasReturnType()) {
12+
include "compatibility/DefaultLoggerPsrLogV3.php";
13+
} else {
14+
include "compatibility/DefaultLoggerPsrLogV1.php";
1715
}
1816
}

src/Core/Logger/DisabledLogger.php

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
<?php
22

3-
43
namespace UCloud\Core\Logger;
54

6-
use Psr\Log\AbstractLogger;
7-
use Psr\Log\LoggerInterface;
5+
use ReflectionMethod;
86

9-
class DisabledLogger extends AbstractLogger implements LoggerInterface
10-
{
11-
public function log($level, $message, array $context = [])
12-
{
13-
// Do nothing
7+
$logMethodReflection = new ReflectionMethod("Psr\Log\AbstractLogger", "log");
8+
if (version_compare(PHP_VERSION, '8.0.0', '<')) {
9+
include "compatibility/DisabledLoggerPsrLogV1.php";
10+
} else {
11+
if ($logMethodReflection->hasReturnType()) {
12+
include "compatibility/DisabledLoggerPsrLogV3.php";
13+
} else {
14+
include "compatibility/DisabledLoggerPsrLogV1.php";
1415
}
1516
}

0 commit comments

Comments
 (0)