jack33232 / klogger
一个简单的日志类,由 jack33232 衍生,并添加了一些新功能
Requires
- php: >=5.3
- psr/log: ^1.0.0
Requires (Dev)
- phpunit/phpunit: 4.0.*
This package is auto-updated.
Last update: 2021-04-04 10:03:33 UTC
README
由 Kenny Katzgrau 和 Dan Horrigan 编写的项目。
关于
KLogger 是一个易于使用的符合 PHP 的 PSR-3 日志类。它不会对文件权限无动于衷(这是预期的)。它旨在是一个你可以快速将其包含到项目中并立即开始使用的类。
如果您需要一个支持 PHP < 5.3 的日志记录器,请查看 之前的版本 中的 KLogger 版本 < 1.0.0。
安装
Composer
从命令行
composer require katzgrau/klogger:dev-master
在您的 composer.json
{ "require": { "katzgrau/klogger": "dev-master" } }
基本用法
<?php require 'vendor/autoload.php'; $users = [ [ 'name' => 'Kenny Katzgrau', 'username' => 'katzgrau', ], [ 'name' => 'Dan Horrigan', 'username' => 'dhrrgn', ], ]; $logger = new Katzgrau\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 ));
以下是完整列表
选项 | 默认值 | 描述 |
---|---|---|
dateFormat | 'Y-m-d G:i:s.u' | 日志文件开头的日期格式(php 格式化) |
extension | 'txt' | 日志文件扩展名 |
filename | [prefix][date].[extension] | 设置日志文件的名称。 这将覆盖前缀和扩展名选项。 |
flushFrequency | false (禁用) |
在多少行后刷新输出缓冲区 |
prefix | 'log_' | 日志文件前缀 |
logFormat | false |
日志条目格式 |
appendContext | true |
当 false 时,不要将上下文追加到日志条目中 |
日志格式化
logFormat
选项允许您定义每行应该是什么样子,并且可以包含表示日期、消息等的参数。
当提供一个字符串时,它将解析花括号({
和 }
)中的变量,并将它们替换为相应的值
参数 | 描述 |
---|---|
date | 当前日期(使用 dateFormat 选项) |
level | PSR日志级别 |
level-padding | 使此日志级别与日志文件中的其他日志级别在视觉上对齐所需的空白 |
priority | 日志级别的整数值(见 $logLevels ) |
message | 要记录的消息 |
context | JSON编码的上下文 |
制表符分隔
与默认格式相同,但用制表符而不是空格分隔各部分
$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}";
为什么使用KLogger?
为什么不呢?只要将其放入其中即可。如果它能节省您的时间并且满足您的需求,那就去做吧!引用一下我们的C语言代码之父的书籍中的话:“在别人的工作上构建””。
谁使用KLogger?
Klogger已被用于以下项目的开发中
* The University of Iowa
* The University of Laverne
* The New Jersey Institute of Technology
* Middlesex Hospital in NJ
此外,它还被用于许多商业和个人项目。
特别感谢
特别感谢所有贡献者
许可协议
MIT许可协议
版权(c)2008-2015 Kenny Katzgrau katzgrau@gmail.com
特此免费授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,无限制地处理该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及允许向软件提供者提供软件的人士行使上述权利,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的还是法定的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,由此软件或其使用或其他处置引起、产生或与之相关。