idearia / php-logger
PHP时间跟踪的简单日志类
1.5
2023-01-12 11:11 UTC
Requires
- php: ^7.0 | ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
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