johnykvsky / jklogger
一个简单的日志类
0.1.2
2021-07-13 18:48 UTC
Requires
- php: ^7.4 || ^8.0
- psr/log: ^1.0.0
Requires (Dev)
- johnykvsky/faker: ~1.14
- phpstan/extension-installer: ~1.1.0
- phpstan/phpstan: ~0.12.92
- phpunit/phpunit: ~8.5.2
- thecodingmachine/phpstan-strict-rules: ~0.12.1
This package is auto-updated.
Last update: 2024-09-15 22:27:11 UTC
README
PHP的简单日志。归功于 Kenny Katzgrau 和 Dan Horrigan
JKLogger 是一个易于使用的符合 PSR-3 规范的 PHP 日志类。它不会对文件权限过于简单(这是预期的)。它的目的是快速将此类包含到项目中并立即开始工作。
安装
通过 Composer
$ composer require johnykvsky/jklogger
应在 PHP 5.6 上运行良好,但我没有检查这一点。只需更改 composer.json 中的所需 PHP 版本,并可能删除开发包和类型提示。
用法
<?php require 'vendor/autoload.php'; $users = [ [ 'name' => 'Kenny Katzgrau', 'username' => 'katzgrau', ], [ 'name' => 'Dan Horrigan', 'username' => 'dhrrgn', ], ]; $logger = new johnykvsky\Utils\JKLogger(__DIR__.'/logs'); $logger->info('Returned a million search results'); $logger->error('Oh dear.'); $logger->debug('Got these users from the Database.', $users);
输出
[2014-03-20 3:35:43.762437] [INFO] Returned a million search results
[2014-03-20 3:35:43.762578] [ERROR] Oh dear.
[2014-03-20 3:35:43.762795] [DEBUG] Got these users from the Database.
0: array(
'name' => 'Kenny Katzgrau',
'username' => 'katzgrau',
)
1: array(
'name' => 'Dan Horrigan',
'username' => 'dhrrgn',
)
设置日志级别阈值
您可以使用 Psr\Log\LogLevel
常量来设置日志级别阈值,这样低于该级别的任何消息都不会被记录。
默认级别
默认级别是 DEBUG
,这意味着所有内容都将被记录。
可用级别
<?php use Psr\Log\LogLevel; // These are in order of highest priority to lowest. LogLevel::EMERGENCY; LogLevel::ALERT; LogLevel::CRITICAL; LogLevel::ERROR; LogLevel::WARNING; LogLevel::NOTICE; LogLevel::INFO; LogLevel::DEBUG;
示例
<?php // The $logger = new johnykvsky\Utils\JKLogger('/var/log/', Psr\Log\LogLevel::WARNING); $logger->error('Uh Oh!'); // Will be logged $logger->info('Something Happened Here'); // Will be NOT logged
其他选项
JKLogger 通过构造函数的第三个参数支持其他选项
<?php // Example $logger = new johnykvsky\Utils\JKLogger('/var/log/', Psr\Log\LogLevel::WARNING, array ( 'extension' => 'log', // changes the log file extension ));
以下是完整的列表
日志格式化
logFormat
选项允许您定义每行应该是什么样子,并且可以包含表示日期、消息等的参数。
当提供一个字符串时,它将被解析以查找括号({
和 }
)中的变量,并用相应的值替换它们
制表符分隔
与默认格式相同,但使用制表符而不是空格来分隔部分
$logFormat = "[{date}]\t[{level}]\t{message}";
自定义变量和静态文本
将自定义内容注入到日志消息中
$logFormat = "[{date}] [$var] StaticText {message}";
JSON
要输出纯 JSON,将 appendContext
设置为 false
并提供类似以下内容的值作为 logFormat
选项的值
$logFormat = json_encode([
'datetime' => '{date}',
'logLevel' => '{level}',
'message' => '{message}',
'context' => '{context}',
]);
输出将如下所示
{"datetime":"2015-04-16 10:28:41.186728","logLevel":"INFO","message":"Message content","context":"{"1":"foo","2":"bar"}"}
带有级别填充的格式化输出
对于强迫症患者
$logFormat = "[{date}] [{level}]{level-padding} {message}";
...
$logFormat = "[{date}] [{level}{level-padding}] {message}";
测试
$ composer test
代码检查
$ composer phpstan $ composer phpstan-max
安全
如果您发现任何安全相关的问题,请通过电子邮件 johnykvsky@protonmail.com 联系我,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。