4 Commits
1.1.3 ... 1.1.6

Author SHA1 Message Date
crazywhalecc
ac5fa59428 Add long level name 2026-05-06 14:47:06 +08:00
crazywhalecc
26dc5fa8c3 Enhance output handling in ConsoleLogger to use STDERR for specific log levels 2025-12-16 10:56:19 +08:00
crazywhalecc
e75fa01ca5 Enhance output handling in ConsoleLogger to use STDERR for specific log levels 2025-12-16 10:56:09 +08:00
crazywhalecc
b28c0c26d5 Add setLevel function 2025-11-08 23:38:01 +08:00
2 changed files with 25 additions and 7 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "zhamao/logger",
"description": "Another Console Logger for CLI Applications",
"description": "Another Colorful Console Logger for CLI Applications",
"type": "library",
"license": "Apache-2.0",
"autoload": {
@@ -16,7 +16,7 @@
"authors": [
{
"name": "jerry",
"email": "admin@zhamao.me"
"email": "github@cwcc.me"
},
{
"name": "sunxyw",

View File

@@ -10,7 +10,7 @@ use Psr\Log\LogLevel;
class ConsoleLogger extends AbstractLogger
{
public const VERSION = '1.1.3';
public const VERSION = '1.1.6';
/**
* 日志输出格式
@@ -93,13 +93,15 @@ class ConsoleLogger extends AbstractLogger
*/
protected $decorated;
protected $use_stderr = false;
/**
* 创建一个 ConsoleLogger 实例
*
* @param string $level 日志等级
* @param null|resource $stream
*/
public function __construct(string $level = LogLevel::INFO, $stream = null, bool $decorated = true)
public function __construct(string $level = LogLevel::INFO, $stream = null, bool $decorated = true, bool $use_stderr = false)
{
$this->decorated = $decorated;
self::$log_level = $this->castLogLevel($level);
@@ -119,6 +121,12 @@ class ConsoleLogger extends AbstractLogger
&& posix_isatty($stream); // whether is interactive terminal
}
$this->stream = $stream;
$this->use_stderr = $use_stderr;
}
public function setLevel(string $level): void
{
self::$log_level = $this->castLogLevel($level);
}
/**
@@ -171,7 +179,7 @@ class ConsoleLogger extends AbstractLogger
$t['line'] = 0;
}
$log .= "#{$i} {$t['file']}({$t['line']}): ";
/** @phpstan-ignore-next-line */
/* @phpstan-ignore-next-line */
if (isset($t['object']) && is_object($t['object'])) {
$log .= get_class($t['object']) . '->';
}
@@ -210,6 +218,7 @@ class ConsoleLogger extends AbstractLogger
$log_replace = [
'%date%' => date(self::$date_format),
'%level_long%' => strtoupper(self::$levels[$level]),
'%level%' => strtoupper(substr(self::$levels[$level], 0, 4)),
'%body%' => $message,
'%level_short%' => strtoupper(substr(self::$levels[$level], 0, 1)),
@@ -238,11 +247,20 @@ class ConsoleLogger extends AbstractLogger
fwrite($this->stream, $output);
fflush($this->stream);
} else {
// use plain text output
echo $output;
if ($level <= 4 && $this->use_stderr) {
fwrite(STDERR, $output);
} else {
// use plain text output
echo $output;
}
}
}
public function setDecorated(bool $decorated): void
{
$this->decorated = $decorated;
}
/**
* 转换日志等级
*/