johnykvsky/jklogger

一个简单的日志类

0.1.2 2021-07-13 18:48 UTC

This package is auto-updated.

Last update: 2024-09-15 22:27:11 UTC


README

Latest Version on Packagist Software License Total Downloads Build Status

PHP的简单日志。归功于 Kenny KatzgrauDan 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)。有关更多信息,请参阅 许可证文件