laswitchtech/ php-logger
PHP的易于使用日志库
v1.2.11
2024-06-04 13:30 UTC
Requires
README
phpLogger - [已弃用] - 请使用coreLogger代替
描述
phpLogger
类是一个用于将消息记录到文件的PHP包。它支持不同严重程度的记录,包括DEBUG、INFO、SUCCESS、WARNING和ERROR。它还提供了支持轮转日志文件,这有助于管理文件大小并确保日志不会变得太大。
特性
- 支持不同严重程度的记录:DEBUG、INFO、SUCCESS、WARNING和ERROR。
- 轮转日志文件以管理文件大小。
- 提供添加、设置和列出日志文件的能力。
- 支持记录到多个文件。
- 支持记录IP地址。
你可能为什么需要它?
日志是调试和监控软件应用程序的重要部分。它可以帮助开发者识别问题和错误,并提供用户如何与软件交互的见解。《phpLogger》类为PHP应用程序提供了简单灵活地将消息记录到文件的方式。它可以帮助开发者快速设置日志功能和管理日志文件,是任何PHP项目的必备工具。
我能使用这个吗?
当然可以!
许可证
本软件根据GNU通用公共许可证v3.0分发。请阅读LICENSE以获取有关软件可用性和分发的信息。
要求
- PHP >= 7.3
安全性
请负责任地披露发现的任何漏洞 - 向维护者私下报告安全问题。
安装
使用Composer
composer require laswitchtech/php-logger
如何使用它?
用法
初始化phpLogger
要使用phpLogger
,只需包含phpLogger.php文件并创建一个phpLogger
类的新实例。默认情况下,它将在与phpLogger.php文件相同的目录中创建一个名为"默认.log"的日志文件。
//Import phpLogger class into the global namespace //These must be at the top of your script, not inside a function use LaswitchTech\phpLogger\phpLogger; //Load Composer's autoloader require 'vendor/autoload.php'; //Initiate phpLogger $phpLogger = new phpLogger();
记录消息
要记录消息,请使用phpLogger
类的log方法。默认情况下,它将消息记录到"默认.log"文件,并以INFO级别记录。
$phpLogger->log("This is a log message");
您还可以指定日志级别和日志文件名
$phpLogger->log("This is a debug message", phpLogger::LEVEL_DEBUG, "debug");
自定义日志文件
您可以使用phpLogger
类的add、set和rotate方法添加、切换和轮转日志文件。
// Add a new log file named "error.log" $phpLogger->add("error", "error.log"); // Switch to the "error" log file $phpLogger->set("error"); // Rotate the current log file $phpLogger->rotate();
列出日志文件
您还可以使用list方法列出所有日志文件
$files = $phpLogger->list(); print_r($files);
自定义日志消息格式
您可以通过扩展phpLogger
类并重写log方法来自定义记录消息的格式。例如,以下代码将记录包含日期和时间、日志级别、调用函数或方法、文件名和行号的日志消息。
class MyLogger extends phpLogger { public function log($message, $level = self::LEVEL_INFO, $logName = null){ $trace = debug_backtrace(); $caller = isset($trace[1]) ? $trace[1] : $trace[0]; $file = isset($caller['file']) ? $caller['file'] : ''; $line = isset($caller['line']) ? $caller['line'] : ''; $class = isset($caller['class']) && count($trace) > 1 ? $caller['class'] : ''; $function = isset($caller['function']) && count($trace) > 1 ? $caller['function'] : ''; $classTrace = ''; if($class != ''){ $classTrace .= $class . '::'; } if($function != ''){ $classTrace .= $function; } if($classTrace != ''){ $classTrace = " [$classTrace]"; } $timestamp = date("Y-m-d H:i:s"); $logLine = "[$timestamp] [$level]$classTrace ($file:$line) $message" if(is_file($logFile)){ $today = new DateTime(); $logDate = new DateTime(); $logDate->setTimestamp(filemtime($logFile)); if($today->format("Y-m-d") > $logDate->format("Y-m-d")){ $fileName = $logFile . '.' . strtotime($logDate->format("Y-m-d")); rename($logFile, $fileName); } } file_put_contents($logFile, $logLine, FILE_APPEND); if(defined('STDIN')){ echo $logLine; } } }