chrisnoden/talkback

该包已被弃用,不再维护。未建议替代包。

基于Psr-3的日志和消息库,包括Growl、Prowl、Html和其他模块

v1.0.1 2013-07-03 16:24 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:24:59 UTC


README

PSR-3兼容的日志记录,具有可插拔架构

Talkback是从我的Synergy MVC框架派生出来的,是一个符合PSR-3规范的库,您可以使用它来提高PHP项目的通信。

Talkback附带一系列通道,可以附加到特定的LogLevels,您还可以附加任何PSR-3兼容的记录器。

安装

目前最好的方法是使用composer和Packagist

$ composer require "chrisnoden/talkback" "dev-master"

示例

<?php

/**
 * Create a Talkback collection
 */
$logger = \Talkback\Logger::getLogger('main logger');
$logger
    ->addChannel(
        array(
            \Psr\Log\LogLevel::ERROR,
            \Psr\Log\LogLevel::CRITICAL,
            \Psr\Log\LogLevel::ALERT,
            \Psr\Log\LogLevel::EMERGENCY,
            \Psr\Log\LogLevel::INFO,
            \Psr\Log\LogLevel::NOTICE,
            \Psr\Log\LogLevel::WARNING
        ),
        \Talkback\Channel\ChannelFactory::File('/tmp/mylog.log'))
    ->addChannel(\Psr\Log\LogLevel::CRITICAL, \Talkback\Channel\ChannelFactory::Basic())
    ->addChannel(\Psr\Log\LogLevel::INFO, \Talkback\Channel\ChannelFactory::Growl('Bundle'));

上面的示例将创建一个符合PSR-3的对象(它将通过将Psr\Log\LoggerInterface和/或Psr\Log\AbstractLogger进行比较的测试)。您的新$logger对象将使用ERROR、CRITICAL、ALERT、EMERGENCY、INFO、NOTICE或WARNING级别将所有日志写入文件'tmp/mylog.log'。

它还将输出任何CRITICAL错误到您的控制台或HTML输出的末尾(它自动选择控制台或HTML,但您也可以覆盖)。

它还将输出任何INFO项目到Growl(适用于Mac)- 当不在开发Mac上运行时会自动降级。

在示例中,记录器的名称是“主记录器”,并且它成为静态的,因此您可以在PHP的任何其他代码块中使用Logger::getLogger('main logger')来附加到同一个记录器。您可以使用不同的名称创建多个记录器,或者只使用一个。

您可以将多个通道附加到Log Level。示例中INFO级别被File通道和Growl捕获。

添加另一个记录器

目前尚未完全测试...

您应该能够使用以下方式附加任何PSR-3兼容的记录器(Monolog、apache/log4php等):

$logger->addLogger($otherLoggerObject);

从那个点开始,您只需将日志记录到$logger,您的日志将被$otherLoggerObject捕获,以及您已添加的任何Talkback通道。

日志记录

根据Psr-3规范,您可以通过以下方式之一进行日志记录:

<?php

$logger->debug("This is a DEBUG level message");
$logger->notice("This is a NOTICE level message");
$logger->info("This is an INFO level message");
$logger->warning("This is a WARNING level message");
$logger->alert("This is an ALERT level message");
$logger->error("This is an ERROR level message");
$logger->critical("This is a CRITICAL level message");
$logger->emergency("This is an EMERGENCY level message");
$logger->log(\Psr\Log\LogLevel::ERROR, "This is an error level message");

当前通道包括

  • 控制台
  • HTML
  • 系统日志
  • 文件
  • Growl
  • Prowl

Prowl非常适合获取iOS的临界警报通知,例如!

我会频繁重构这个库,所以请经常查看。

欢迎提问/建议。