flavienbwk / klogger
一个简单的日志类。
Requires
- php: >=5.3
- psr/log: ^1.0.0
This package is not auto-updated.
Last update: 2024-09-29 05:27:50 UTC
README
由 Kenny Katzgrau 和 Dan Horrigan 开发的项目。
Flavien Berwick对其进行了改进,以便有效处理有效的JSON。
关于
KLogger 是一个易于使用的、符合 PHP 的 PSR-3 日志类。它不会对文件权限一无所知(这是预期的)。它旨在成为一个你可以快速包含到项目中并立即使用的类。
如果您需要一个支持 PHP < 5.3 的日志记录器,请查看 KLogger 的 过去版本,以获取 < 1.0.0 的 KLogger 版本。
安装
Composer
从命令行
composer require flavienbwk/klogger:dev-master
基本用法
<?php require 'vendor/autoload.php'; $users = [ [ 'name' => 'Kenny Katzgrau', 'username' => 'katzgrau', ], [ 'name' => 'Dan Horrigan', 'username' => 'dhrrgn', ], ]; $logger = new flavienbwk\KLogger\Logger(__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-3 兼容
KLogger 是 PSR-3 兼容的。这意味着它实现了 Psr\Log\LoggerInterface。
设置日志级别阈值
您可以使用 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 Katzgrau\KLogger\Logger('/var/log/', Psr\Log\LogLevel::WARNING); $logger->error('Uh Oh!'); // Will be logged $logger->info('Something Happened Here'); // Will be NOT logged
附加选项
KLogger 支持通过构造函数中的第三个参数使用附加选项
<?php // Example $logger = new Katzgrau\KLogger\Logger('/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 选项的值。您可以使用此
$Logger = new flavienbwk\KLogger\Logger(__DIR__ . '/logs', Psr\Log\LogLevel::INFO, [
"dateFormat" => "G:i:s.u d/m/Y",
"extension" => "json",
"logFormat" => json_encode([
'datetime' => '{date}',
'logLevel' => '{level}',
'message' => '{message}',
'context' => '{context}',
]),
"appendContext" => false
]);
输出将如下所示
{"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}";
为什么使用 KLogger?
为什么不呢?只需将其放入即可。如果它能节省您的宝贵时间并且满足您的需求,那就去做吧!引用一下我们的 C 代码之父们的话:“在别人的工作上建立”。
谁使用 KLogger?
Klogger 已在以下项目中使用
* The University of Iowa
* The University of Laverne
* The New Jersey Institute of Technology
* Middlesex Hospital in NJ
此外,它已用于许多项目,包括商业和个人项目。