phpgt/logger

PSR-3 日志记录器和实现。

维护者

详细信息

github.com/PhpGt/Logger

源代码

问题

资助包维护!
PhpGt

v1.0.0 2021-09-21 14:18 UTC

This package is auto-updated.

Last update: 2024-09-10 06:14:19 UTC


README

无需配置即可开始记录日志。默认情况下,日志记录器作为静态单例运行 - Log::error("您不能这样做"); 就可以开始使用。当需要时,您可以配置日志记录器将日志发送到不同的文件/套接字来源。

本库的目标是简约。没有计划实现比文件和套接字更多的日志记录来源。这简化了代码,使其具有单一职责,但仍然模块化,可以连接到处理日志到电子邮件地址、Slack 消息、AWS SQS、数据库等的外部脚本。

日志级别

本库实现了PSR-3 接口。这意味着在您的代码中,您可以选择以下级别的日志记录,并且您的环境可以决定要报告的最小日志级别。例如,在生产服务器上记录调试信息可能过于冗长。这与Syslog 协议一致。

  • debug - 详细调试信息。
  • info - 有趣的事件。
  • notice - 正常但重要的事件。
  • warning - 非错误但异常的情况。
  • error - 运行时错误,不需要立即采取行动,但通常应该记录并监控。
  • critical - 严重情况。
  • alert - 必须立即采取行动。
  • emergency - 系统不可用。

静态使用

只有当类真正无状态时才应使用静态类。日志记录是一个没有对运行程序产生副作用的事例,因此主要的期望是使用 Log 类的静态方法进行日志记录。

不需要在程序的所有类中传递 Log 类的实例,也不应该要求在所有可能的日志记录位置都使用依赖注入框架。

然而,某些程序需要只能通过 Log 类的实例才能满足的先进日志记录功能,例如为程序的不同区域使用不同的日志来源。请查看示例目录,了解如何使用实例化实现此目的。

使用示例

use Gt\Logger\Log;
use Gt\Logger\LogConfig;
use Gt\Logger\LogLevel;
use Gt\Logger\LogHandler\StreamHandler;
use Gt\Logger\LogHandler\FileHandler;

// Send warnings and above to the remote socket.
LogConfig::addHandler(new StreamHandler("/example/remote.sock"), LogLevel::WARNING);
// Send all log types to the local log file.
LogConfig::addHandler(new FileHandler("/var/log/example.log"), LogLevel::DEBUG);

$fileName = "name.txt";
if(file_exists($fileName)) {
        $name = trim(file_get_contents($fileName));
        
        if(empty($name)) {
                Log::error("Empty name loaded");        
        }
        else {
                Log::info("Loaded name: $name");
        }
}
else {
        $name = "you";
        Log::info("Using default name");
}