mirror of
https://github.com/zhamao-robot/zhamao-logger.git
synced 2026-07-02 14:25:40 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30bee20a0a | ||
|
|
d13c8fb85f | ||
|
|
c21ddda192 | ||
|
|
d79edcef53 |
@@ -25,7 +25,7 @@
|
|||||||
],
|
],
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.2 || ^7.3 || ^7.4 || ^8.0 || ^8.1",
|
"php": "^7.2 || ^7.3 || ^7.4 || ^8.0 || ^8.1 || ^8.2 || ^8.3 || ^8.4 || ^8.5",
|
||||||
"psr/log": "^1 || ^2 || ^3",
|
"psr/log": "^1 || ^2 || ^3",
|
||||||
"symfony/polyfill-mbstring": "^1.0"
|
"symfony/polyfill-mbstring": "^1.0"
|
||||||
},
|
},
|
||||||
@@ -37,9 +37,9 @@
|
|||||||
"ext-mbstring": "Use C/C++ extension instead of polyfill will be more efficient"
|
"ext-mbstring": "Use C/C++ extension instead of polyfill will be more efficient"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"friendsofphp/php-cs-fixer": "^3.2",
|
"friendsofphp/php-cs-fixer": "^3.64",
|
||||||
"phpstan/phpstan": "^1.1",
|
"phpstan/phpstan": "^1.12",
|
||||||
"phpunit/phpunit": "^8.5 || ^9.0",
|
"phpunit/phpunit": "^9.0",
|
||||||
"roave/security-advisories": "dev-latest",
|
"roave/security-advisories": "dev-latest",
|
||||||
"brainmaestro/composer-git-hooks": "^2.8"
|
"brainmaestro/composer-git-hooks": "^2.8"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use Psr\Log\LogLevel;
|
|||||||
|
|
||||||
class ConsoleLogger extends AbstractLogger
|
class ConsoleLogger extends AbstractLogger
|
||||||
{
|
{
|
||||||
public const VERSION = '1.1.6';
|
public const VERSION = '1.1.9';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志输出格式
|
* 日志输出格式
|
||||||
@@ -86,6 +86,13 @@ class ConsoleLogger extends AbstractLogger
|
|||||||
*/
|
*/
|
||||||
protected $stream;
|
protected $stream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归保护标志 — 防止日志写入失败时错误处理器再次调用日志导致死循环 CPU 100%
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
protected static $in_log = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否带颜色
|
* 是否带颜色
|
||||||
*
|
*
|
||||||
@@ -242,17 +249,27 @@ class ConsoleLogger extends AbstractLogger
|
|||||||
} else {
|
} else {
|
||||||
$output = $output . PHP_EOL;
|
$output = $output . PHP_EOL;
|
||||||
}
|
}
|
||||||
// use stream
|
// 递归保护:如果上一次日志写入触发了错误(如终端关闭后 STDOUT/STDERR 破损),
|
||||||
if ($this->stream) {
|
// 跳过本次输出,防止错误处理器递归调用导致 CPU 100% 空耗
|
||||||
fwrite($this->stream, $output);
|
if (self::$in_log) {
|
||||||
fflush($this->stream);
|
return;
|
||||||
} else {
|
}
|
||||||
if ($level <= 4 && $this->use_stderr) {
|
self::$in_log = true;
|
||||||
fwrite(STDERR, $output);
|
try {
|
||||||
|
// use stream
|
||||||
|
if ($this->stream) {
|
||||||
|
fwrite($this->stream, $output);
|
||||||
|
fflush($this->stream);
|
||||||
} else {
|
} else {
|
||||||
// use plain text output
|
if ($level <= 4 && $this->use_stderr) {
|
||||||
echo $output;
|
fwrite(STDERR, $output);
|
||||||
|
} else {
|
||||||
|
// use plain text output
|
||||||
|
echo $output;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
self::$in_log = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user