flavienbwk/klogger

此软件包的最新版本(1.0.0)没有提供许可信息。

一个简单的日志类。

1.0.0 2018-07-19 10:09 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:27:50 UTC


README

Kenny KatzgrauDan 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

此外,它已用于许多项目,包括商业和个人项目。