Compare commits

..

No commits in common. "master" and "1.1.2" have entirely different histories.

3 changed files with 23 additions and 39 deletions

View File

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

View File

@ -10,7 +10,7 @@ use Psr\Log\LogLevel;
class ConsoleLogger extends AbstractLogger
{
public const VERSION = '1.1.5';
public const VERSION = '1.1.2';
/**
* 日志输出格式
@ -93,15 +93,13 @@ 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, bool $use_stderr = false)
public function __construct(string $level = LogLevel::INFO, $stream = null, bool $decorated = true)
{
$this->decorated = $decorated;
self::$log_level = $this->castLogLevel($level);
@ -115,18 +113,12 @@ class ConsoleLogger extends AbstractLogger
if (($stat['mode'] & 0170000) === 0100000) { // whether is regular file
$this->decorated = false;
} else {
$this->decorated
= PHP_OS_FAMILY !== 'Windows' // linux or unix
$this->decorated =
PHP_OS_FAMILY !== 'Windows' // linux or unix
&& function_exists('posix_isatty')
&& 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);
}
/**
@ -170,7 +162,7 @@ class ConsoleLogger extends AbstractLogger
{
$log = 'Stack trace:' . PHP_EOL;
$trace = debug_backtrace();
// array_shift($trace);
//array_shift($trace);
foreach ($trace as $i => $t) {
if (!isset($t['file'])) {
$t['file'] = 'unknown';
@ -179,7 +171,6 @@ class ConsoleLogger extends AbstractLogger
$t['line'] = 0;
}
$log .= "#{$i} {$t['file']}({$t['line']}): ";
/* @phpstan-ignore-next-line */
if (isset($t['object']) && is_object($t['object'])) {
$log .= get_class($t['object']) . '->';
}
@ -212,10 +203,16 @@ class ConsoleLogger extends AbstractLogger
return ConsoleColor::apply($styles, $string)->__toString();
}
/**
* {@inheritDoc}
*/
public function log($level, $message, array $context = []): void
{
$level = $this->castLogLevel($level);
if (!$this->shouldLog($level)) {
return;
}
$log_replace = [
'%date%' => date(self::$date_format),
'%level%' => strtoupper(substr(self::$levels[$level], 0, 4)),
@ -227,15 +224,11 @@ class ConsoleLogger extends AbstractLogger
$output = $this->interpolate($output, array_merge($this->static_context, $context));
foreach ($this->log_callbacks as $callback) {
if ($callback($level, $output, $message, $context, $this->shouldLog($level)) === false) {
if ($callback($level, $output, $message, $context) === false) {
return;
}
}
if (!$this->shouldLog($level)) {
return;
}
if ($this->decorated) {
$output = $this->colorize($output, $level) . PHP_EOL;
} else {
@ -246,30 +239,21 @@ class ConsoleLogger extends AbstractLogger
fwrite($this->stream, $output);
fflush($this->stream);
} else {
if ($level <= 4 && $this->use_stderr) {
fwrite(STDERR, $output);
} else {
// use plain text output
echo $output;
}
// use plain text output
echo $output;
}
}
public function setDecorated(bool $decorated): void
{
$this->decorated = $decorated;
}
/**
* 转换日志等级
*/
protected function castLogLevel(string $level): int
private function castLogLevel(string $level): int
{
if (in_array($level, self::$levels, true)) {
return array_flip(self::$levels)[$level];
}
throw new InvalidArgumentException('Invalid log level: ' . $level);
throw new InvalidArgumentException('无效的日志等级');
}
/**
@ -277,7 +261,7 @@ class ConsoleLogger extends AbstractLogger
*
* @param mixed $item 日志内容
*/
protected function stringify($item): string
private function stringify($item): string
{
switch (true) {
case is_callable($item):
@ -311,7 +295,7 @@ class ConsoleLogger extends AbstractLogger
/**
* 判断是否应该记录该等级日志
*/
protected function shouldLog(int $level): bool
private function shouldLog(int $level): bool
{
return $level <= self::$log_level;
}
@ -322,7 +306,7 @@ class ConsoleLogger extends AbstractLogger
* @param string $message 日志内容
* @param array $context 变量列表
*/
protected function interpolate(string $message, array $context = []): string
private function interpolate(string $message, array $context = []): string
{
$replace = [];
foreach ($context as $key => $value) {

View File

@ -137,8 +137,8 @@ class TablePrinter
$line_data[$current_line] = [
'used' => $valid_width - $k_len - 2 - $partial_v_len,
'can_put_second' => false,
'lines' => $k . ': '
. ConsoleColor::apply([$this->value_color], $partial_v . str_pad('', $valid_width - $k_len - 2 - $partial_v_len, '.')),
'lines' => $k . ': ' .
ConsoleColor::apply([$this->value_color], $partial_v . str_pad('', $valid_width - $k_len - 2 - $partial_v_len, '.')),
];
++$current_line;
// 下一个参数