devlabs91/klogger

一个简单的日志类

1.2.1 2016-11-07 19:29 UTC

This package is auto-updated.

Last update: 2024-09-16 19:11:40 UTC


README

Kenny KatzgrauDan Horrigan 开发的一个项目。

关于

KLogger 是一个易于使用的符合 PSR-3 的 PHP 日志类。它不关心文件权限(这是预期的)。它的目的是成为一个你可以快速将其包含到项目中并立即工作的类。

如果你需要一个支持 PHP < 5.3 的日志器,请查看 KLogger 的 旧版本

安装

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
));

以下是完整的列表

日志格式化

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}";

为什么使用 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

特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人,免费使用本软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许获得本软件的人使用本软件,受以下条件的约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是因为合同、侵权或其他原因,无论索赔、损害或其他责任是否源于、源于或与软件或软件的使用或其他方面有关。