markrogoyski / simplelog-php
强大的PSR-3日志。如此简单,就是简单。
Requires (Dev)
- php-coveralls/php-coveralls: ^2.7
- php-parallel-lint/php-parallel-lint: ^1.3
- phploc/phploc: *
- phpmd/phpmd: ^2.10
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: 3.*
- vimeo/psalm: ^5.11
This package is auto-updated.
Last update: 2024-08-25 21:06:54 UTC
README
SimpleLog
强大的PSR-3日志。如此简单,就是简单!
SimpleLog是一个简单的PHP PSR-3日志记录器,易于使用。
通过提供良好的默认设置来实现简洁性。无需配置选项!而且足够灵活,可以满足大多数日志需求。如果您的应用程序的日志需求超出了SimpleLog提供的范围,由于它实现了PSR-3,您可以在需要时将另一个优秀的PSR-3日志记录器(如MonoLog)替换其中,只需进行最小的修改。
功能
- 力量与简洁
- PSR-3日志记录器接口
- 多种日志级别严重性
- 日志通道
- 进程ID日志
- 自定义日志消息
- 自定义上下文数据
- 异常日志
设置
将库添加到您项目的composer.json
文件中
{ "require": { "markrogoyski/simplelog-php": "2.*" } }
使用composer安装库
$ php composer.phar install
Composer将在您的vendor文件夹中安装SimpleLog。然后您可以将以下内容添加到您的.php文件中以使用库并启用自动加载。
require_once(__DIR__ . '/vendor/autoload.php');
或者,在命令行上使用composer来要求并安装SimpleLog
$ php composer.phar require markrogoyski/simplelog-php:2.*
最低要求
- PHP 8.0
- 注意:对于PHP 7.4,请使用v1.0(
markrogoyski/simplelog-php:1.0
) - 注意:对于PHP 7.0-7.3,请使用v0.4(
markrogoyski/simplelog-php:0.4
)
用法
20秒入门教程
$logfile = '/path/to/logfile.log'; $channel = 'events'; $logger = new SimpleLog\Logger($logfile, $channel); $logger->info('SimpleLog really is simple.');
这就对了!您的应用程序正在记录日志!
扩展示例
$logfile = '/var/log/events.log'; $channel = 'billing'; $logger = new SimpleLog\Logger($logfile, $channel); $logger->info('Begin process that usually fails.', ['process' => 'invoicing', 'user' => $user]); try { invoiceUser($user); // This usually fails } catch (\Exception $e) { $logger->error('Billing failure.', ['process' => 'invoicing', 'user' => $user, 'exception' => $e]); }
日志输出
2017-02-13 00:35:55.426630 [info] [billing] [pid:17415] Begin process that usually fails. {"process":"invoicing","user":"bob"} {}
2017-02-13 00:35:55.430071 [error] [billing] [pid:17415] Billing failure. {"process":"invoicing","user":"bob"} {"message":"Could not process invoice.","code":0,"file":"/path/to/app.php","line":20,"trace":[{"file":"/path/to/app.php","line":13,"function":"invoiceUser","args":["mark"]}]}
日志输出
日志行具有以下格式
YYYY-mm-dd HH:ii:ss.uuuuuu [loglevel] [channel] [pid:##] Log message content {"Optional":"JSON Contextual Support Data"} {"Optional":"Exception Data"}
日志行易于阅读和理解。日志行始终位于一行上。字段以制表符分隔。
日志级别
SimpleLog基于PSR日志级别具有八个日志级别严重性。
$logger->debug('Detailed information about the application run.'); $logger->info('Informational messages about the application run.'); $logger->notice('Normal but significant events.'); $logger->warning('Information that something potentially bad has occured.'); $logger->error('Runtime error that should be monitored.'); $logger->critical('A service is unavailable or unresponsive.'); $logger->alert('The entire site is down.'); $logger->emergency('The Web site is on fire.');
默认情况下,所有日志级别都记录。最小日志级别可以通过以下两种方式更改
- 可选构造函数参数
- 在任何时候都可以设置的设置方法
use Psr\Log\LogLevel; // Optional constructor Parameter (Only error and above are logged [error, critical, alert, emergency]) $logger = new SimpleLog\Logger($logfile, $channel, LogLevel::ERROR); // Setter method (Only warning and above are logged) $logger->setLogLevel(LogLevel::WARNING);
上下文数据
SimpleLog启用最佳实践,以便具有通用日志消息和上下文支持数据以提供对消息的上下文。
日志消息的第二个参数是一个键值对关联数组,它作为JSON字符串记录,作为日志消息的上下文支持数据。
// Add context to a Web request. $log->info('Web request initiated', ['method' => 'GET', 'endpoint' => 'user/account', 'queryParameters' => 'id=1234']); // Add context to a disk space warning. $log->warning('Free space is below safe threshold.', ['volume' => '/var/log', 'availablePercent' => 4]);
记录异常
异常通过使用键exception和值异常变量来记录上下文数据。
catch (\Exception $e) { $logger->error('Something exceptional has happened', ['exception' => $e]); }
日志通道
将通道视为日志行的命名空间。如果您希望多个记录器或应用程序将日志记录到单个日志文件,通道就是您的朋友。
通道可以通过以下两种方式设置
- 构造函数参数
- 在任何时候都可以设置的设置方法
// Constructor Parameter $channel = 'router'; $logger = new SimpleLog\Logger($logfile, $channel); // Setter method $logger->setChannel('database');
调试功能
将日志记录到STDOUT
在开发过程中,您可以打开日志输出到屏幕(STDOUT)以方便。
$logger->setOutput(true); $logger->debug('This will get logged to STDOUT as well as the log file.');
虚拟日志记录器
假设您需要在单元测试期间注入依赖项时需要一个记录器,并且您不想真正记录任何内容。您可以设置日志级别为Logger::LOG_LEVEL_NONE
,它不会在任意级别记录。
use SimpleLog\Logger; $logger->setLogLevel(Logger::LOG_LEVEL_NONE); $logger->info('This will not log to a file.');
单元测试
$ cd tests
$ phpunit
标准
SimpleLog符合以下标准
- PSR-1 - 基本编码规范 (http://www.php-fig.org/psr/psr-1/)
- PSR-3 - 记录器接口 (http://www.php-fig.org/psr/psr-3/)
- PSR-4 - 自动加载器 (http://www.php-fig.org/psr/psr-4/)
- PSR-12 - 扩展编码风格指南 (http://www.php-fig.org/psr/psr-12/)
许可证
SimpleLog遵循MIT许可证。