naucon / logger
此包包含一个简单的PHP日志类,用于处理一个或多个PSR-3兼容的日志记录器。
Requires
- php: >=5.3.0
- psr/log: ~1.0
Suggests
- graylog2/gelf-php: To push log messages to an GrayLog2 server.
This package is auto-updated.
Last update: 2024-08-29 03:26:15 UTC
README
关于
此包包含一个简单的PHP日志类,用于处理一个或多个PSR-3兼容的日志记录器。
特性
- logger
- 处理一个或多个日志记录器
- 日志级别
- EMERGENCY
- ALERT
- CRITICAL
- ERROR
- WARNING
- NOTICE
- INFO
- DEBUG
- 消息
- 带有上下文
- 将异常作为消息传递
- PSR-3 兼容
- 处理器
- 空处理器
- 不记录任何日志
- 标准处理器(StdHandler)
- 日志文件
- 限制日志级别
- 异常堆栈跟踪
- 标准错误处理器(StderrHandler)
- 写入PHP错误日志
- 限制日志级别
- 异常堆栈跟踪
- 日志处理器(LogHandler)
- 日志文件
- 限制日志级别
- 包含持续时间
- 包含IP地址(当前用户IP)
- 包含用户ID(从外部设置)
- 异常堆栈跟踪
- gelf处理器
- 将消息推送到GrayLog2服务器
- 空处理器
- 单例类(应用范围)
兼容性
- PHP5.3
安装
通过Composer安装最新版本
composer require naucon/logger
基本用法
Logger(带StdHandler)
要实现日志记录器,请创建一个Logger
实例。
use Naucon\Logger\Logger;
$loggerObject = new Logger();
将处理器添加到日志记录器中,以定义日志消息的写入位置。在我们的示例中,我们使用StdHandler
将消息记录到文件中。
$logPath = __DIR__ . '/log/test.log';
use Naucon\Logger\Handler\StdHandler;
$logHandler = new StdHandler($logPath);
$loggerObject->addHandler($logHandler);
处理器也可以限制为某个日志级别。
use Naucon\Logger\LogLevel;
use Naucon\Logger\Handler\StdHandler;
$logHandler = new StdHandler(LogLevel::WARNING);
日志记录器类提供了以下方法来记录消息
- emergency($message, array $context=array());
- alert($message, array $context=array());
- critical($message, array $context=array());
- error($message, array $context=array());
- warning($message, array $context=array());
- notice($message, array $context=array());
- info($message, array $context=array());
- debug($message, array $context=array());
日志消息通过$message
传递。可以通过$context
添加上下文数据。
$loggerObject->emergency('message of level emergency');
$loggerObject->alert('message of level alert');
$loggerObject->critical('message of level critical');
$loggerObject->error('message of level error');
$loggerObject->warning('message of level warning');
$loggerObject->notice('message of level notice');
$loggerObject->info('message of level info');
$loggerObject->debug('message of level debug');
日志文件可能如下所示
[01-Jul-2012 15:54:25 Europe/Paris] PHP emergency: message of level emergency with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP alert: message of level alert with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP critical: message of level critical with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP alert: message of level alert with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP error: message of level error with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP warning: message of level warning with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP notice: message of level notice with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP info: message of level info with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP debug: message of level debug with context: Bob
日志消息可以包含占位符{user}
,这些占位符可以用$context
中的值替换。
$loggerObject->emergency('message of level emergency with context: {user}', array('user' => 'Bob'));
如果对象实现了__toString()
方法,则可以将对象作为消息传递。
$loggerObject->critical(new \Exception('invalid foo'));
记录异常是一种常见模式,因为它允许记录堆栈跟踪。因此,必须将Exception
实例作为具有键exception
的$context
传递。
$exception = new \Exception('invalid foo');
$loggerObject->error($exception->getMessage(), array('exception' => $exception));
标准错误处理器(StderrHandler)
日志记录器包包含一个标准错误处理器,用于写入PHP错误日志。
要使用处理器,请创建一个StderrHandler
实例并将其添加到Logger
。
use Naucon\Logger\Handler\StderrHandler;
$logHandler = new StderrHandler();
处理器也可以限制为某个日志级别。
use Naucon\Logger\LogLevel;
use Naucon\Logger\Handler\StderrHandler;
$logHandler = new StderrHandler(LogLevel::WARNING);
日志文件可能如下所示
[01-Jul-2012 15:54:25 Europe/Paris] PHP emergency: message of level emergency with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP alert: message of level alert with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP critical: message of level critical with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP alert: message of level alert with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP error: message of level error with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP warning: message of level warning with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP notice: message of level notice with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP info: message of level info with context: Bob
[01-Jul-2012 15:54:25 Europe/Paris] PHP debug: message of level debug with context: Bob
日志处理器(LogHandler)
日志记录器包包含一个具有其他日志格式和额外数据的处理器
* duration
* IP-Address (current user IP)
* User ID (set from outside)
要使用处理器,请创建一个LogHandler
实例并将其添加到Logger
。
$logPath = __DIR__ . '/log/test.log';
use Naucon\Logger\Handler\LogHandler;
$logHandler = new LogHandler($logPath);
处理器也可以限制为某个日志级别。
use Naucon\Logger\LogLevel;
use Naucon\Logger\Handler\LogHandler;
$logHandler = new LogHandler($logPath, LogLevel::WARNING);
日志文件可能如下所示
2010-02-07 19:28:43 0 EMERGENCY [127.0.0.1] unkown message of level emergency
2010-02-07 19:28:43 0.001 ALERT [127.0.0.1] unkown message of level alert
2011-10-08 22:26:09 0.001 CRITICA [127.0.0.1] unkown message of level critical
2011-10-08 22:26:09 0.001 ERROR [127.0.0.1] unkown message of level error
2011-10-08 22:26:09 0.001 WARNING [127.0.0.1] unkown message of level warning
2011-10-08 22:26:09 0.001 NOTICE [127.0.0.1] unkown message of level notice
2011-10-08 22:26:09 0.001 INFO [127.0.0.1] unkown message of level info
2011-10-08 22:26:09 0.001 DEBUG [127.0.0.1] unkown message of level debug
Gelf处理器
日志记录器包包含一个处理器,用于将GELF消息推送到GrayLog2服务器。
首先将graylog2/gelf-php
包添加到您的composer.json
。
"require": {
"graylog2/gelf-php" : "~1.0"
}
然后创建Gelf Transporter和Gelf Publisher。
$transport = new Gelf\Transport\UdpTransport("127.0.0.1", 12201, Gelf\Transport\UdpTransport::CHUNK_SIZE_LAN);
$publisher = new Gelf\Publisher($transport);
之后创建一个GelfHandler
实例并将其添加到Logger
。
use Naucon\Logger\Handler\GelfHandler;
$logHandler = new GelfHandler($publisher, 'www.nclib.dev', 'example-facility');
GelfHandle也可以限制为某个日志级别。
use Naucon\Logger\LogLevel;
use Naucon\Logger\Handler\GelfHandler;
$logHandler = new GelfHandler($publisher, 'www.nclib.dev', 'example-facility', LogLevel::WARNING);
从版本1.0开始,graylog2/gelf-php
包自带了其自己的日志记录器。此PSR-3兼容的日志记录器可以作为处理器添加到我们的Logger
。
use Naucon\Logger\Logger;
$loggerObject = new Logger();
$loggerObject->addHandler(new Gelf\Logger());
$loggerObject->emergency('message of level emergency');
日志管理器
本地包包含一个具有单例模式的LoggerManager
类,以便可以从应用程序的任何位置访问Logger
实例。
除了单例类之外,您还可以使用服务容器。
通过调用静态方法 init()
创建一个 LoggerManager
实例。将一个 Logger
实例作为参数附加到方法 init()
上。
$logPath = __DIR__ . '/log/test2.log';
use Naucon\Logger\Logger;
$loggerObject = new Logger();
use Naucon\Logger\Handler\LogHandler;
$logHandler = new LogHandler($logPath);
$loggerObject->addHandler($logHandler);
use Naucon\Logger\LoggerManager;
LoggerManager::init($loggerObject);
要写入系统日志文件,我们调用已知的静态方法
LoggerManager::emergency('message of level emergency');
LoggerManager::alert('message of level alert');
LoggerManager::critical('message of level critical');
LoggerManager::alert('message of level alert');
LoggerManager::error('message of level error');
LoggerManager::warning('message of level warning');
LoggerManager::notice('message of level notice');
LoggerManager::info('message of level info');
LoggerManager::debug('message of level debug');
许可协议
MIT 许可协议 (MIT)
版权所有 (c) 2015 Sven Sanzenbacher
特此授予任何获得本软件及其相关文档文件(“软件”)副本的任何人,免费使用该软件的权利,不受限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人进行此类操作,前提是遵守以下条件
上述版权声明和本许可协议应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,明示或暗示,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任承担责任,无论这些责任是合同、侵权或其他方式,源于、因之而起或与此软件或软件的使用或其他交易有关。