laswitchtech/php-logger

PHP的易于使用日志库

v1.2.11 2024-06-04 13:30 UTC

README

GitHub repo logo

phpLogger - [已弃用] - 请使用coreLogger代替

License GitHub repo size GitHub top language Version

描述

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;
    }
  }
}