idearia/php-logger

PHP时间跟踪的简单日志类

1.5 2023-01-12 11:11 UTC

This package is auto-updated.

Last update: 2024-09-12 14:48:27 UTC


README

简单的日志类,用于

  • 跟踪日志条目。
  • 使用time()timeEnd()方法跟踪时间,以JavaScript风格。
  • 可选地实时将日志条目写入文件或屏幕。
  • 可选地在任何时候一次性将日志写入文件。

可以使用以下任何一种方法添加日志条目

  • debug( $message, $title = '' ) > 旨在为开发人员提供的诊断消息
  • info( $message, $title = '' ) > 旨在为用户提供的信息消息
  • warning( $message, $title = '' ) > 表示可能出错的情况的警告
  • error( $message, $title = '' ) > 解释程序为何要崩溃

$title 参数是可选的;如果存在,它将被添加到消息前面:"$title > $message"。

快速示例

以下代码

Logger::$log_level = 'debug';
Logger::debug( "variable x is false" );
Logger::info( "program started" );
Logger::warning( "variable not set, something bad might happen" );
Logger::error( "file not found, exiting" );

将打印以下行到STDOUT

$> 2021-07-21T11:11:03+02:00 [DEBUG] : variable x is false
$> 2021-07-21T11:11:03+02:00 [INFO] : program started
$> 2021-07-21T11:11:03+02:00 [WARNING] : variable not set, something bad might happen
$> 2021-07-21T11:11:03+02:00 [ERROR] : file not found, exiting

计时

您可以使用time()timeEnd()函数跟踪已过时间。

计时示例

Logger::time();
sleep(1);
Logger::timeEnd();

将打印

$> 2022-04-19T17:26:26+00:00 [DEBUG] : Elapsed time => 1.003163 seconds

命名计时器

如果您需要同时计时不同的进程,可以使用命名计时器。

例如

Logger::time('outer timer');
sleep(1);
Logger::time('inner timer');
sleep(1);
Logger::timeEnd('inner timer');
Logger::timeEnd('outer timer');

将打印

$> 2022-04-19T17:32:15+00:00 [DEBUG] : Elapsed time for 'inner timer' => 1.002268 seconds
$> 2022-04-19T17:32:15+00:00 [DEBUG] : Elapsed time for 'outer timer' => 2.006117 seconds

选项

要自定义日志记录器,您可以

  • 扩展类并重写静态属性或
  • 在运行时设置静态属性。

在以下示例中,我们采用了第二种方法。

设置日志级别

默认情况下,日志记录器将假定它在生产环境中运行,因此只会打印错误级别的消息。

以下是如何指定所需日志级别的示例

Logger::$log_level = 'error'; // Show only errors
Logger::$log_level = 'warning'; // Show warnings and errors
Logger::$log_level = 'info'; // Show info messages, warnings and errors
Logger::$log_level = 'debug'; // Show debug messages, info messages, warnings and errors

写入文件

要同时写入文件,请设置

Logger::$write_log = true;

自定义日志文件路径

Logger::$log_dir = 'logs';
Logger::$log_file_name = 'my-log';
Logger::$log_file_extension = 'log';

每次运行脚本时都覆盖日志文件

Logger::$log_file_append = false;

不要打印到屏幕

防止打印到STDOUT

Logger::$print_log = false;

并行代码注意事项

该类使用静态方法和内部标志(例如 $logger_ready)来保持其状态。我们这样做是为了使类能够立即工作,而不需要任何先前的配置或实例化。然而,如果您执行并行代码,这可能会创建竞争条件。如果这是您的问题,请告诉我们,如果收到足够的反馈,我们将切换到更类似的做法。

贡献 😊

请随意fork存储库并提交拉取请求!

在发送请求之前,请确保您的代码通过所有测试

composer run test