marck-devs/simple-logger

简单的PHP日志库

1.0.2 2021-09-09 23:04 UTC

This package is auto-updated.

Last update: 2024-09-19 03:42:48 UTC


README

安装

通过composer安装

composer require marck-devs/simple-logger

用法

日志级别

此类包含日志记录器可用所有级别

  • DEBUG
  • LOG
  • INFO
  • WARN
  • ERROR
  • CRITICAL

同时具有静态方法解析字符串并获取相应的级别

    LogLevels::log_level_from_string("debug");

使用此方法可以从.env或配置文件中读取日志级别并将其加载到日志记录器中。

SimpleLogger

这是主类。

方法: public function __construct($name, $level, $date_format, $log_format)

  • $name 是日志记录器的名称,默认为 app
  • $level 是将显示的最小日志级别,默认为 LogLevels::WARN
  • $date_formatDateFormatter 接口实现,默认为 SimpleDateFormatter
  • $log_formatLogForammtter 接口实现,默认为 SimpleFormatter

public function log($msg, $data=[])

public function info($msg, $data=[])

public function debug($msg, $data=[])

public function warn($msg, $data=[])

public function error($msg, $data=[])

public function critical($msg, $data=[])

在默认输出流中写入带有传递的消息的行。此消息可以格式化为Python格式化函数。在消息中可以放入任何键到花括号中,并生成一个包含键和值的字典数组

    class Foo{
        private static $log;

        public function __construct(){
            self::$log = new \MarckDevs\SimpleLogger\SimpleLogger("name", \MarckDevs\SimpleLogger\LogLeves::WARN);
        }

        public function fun(){
            self::$log->log("My message is {message}", ["message" => "hello"]);
            self::$log->warn("My message is {test}", ["test" => "test"]);
            self::$log->debug("My {cnt} is {message}", ["message" => "hello", "ctn"=>"message"]);
            self::$log->error("My message is {message}", ["message" => "hello"]);
        }
    }

存在相同的保留关键字

  • {file} - 获取文件路径
  • {date} - 时间日期
  • {user} - 当前用户
  • {class} - 调用日志记录器的类
  • {function} - 调用日志记录器的函数
  • {line} - 调用的行
  • {lvl} - 日志级别
  • {msg} - 日志消息

如果想要为日志记录器设置自定义格式,可以创建一个实现 LogFormatter 的类。

保存到日志文件中

SimpleLogger 有两种方法可以设置日志文件和错误文件

    SimpleLogger::set_log_file($path_to_file);
    SimpleLogger::set_error_file($path_to_file);

使用这些,默认输出流将更改为文件。

创建自定义格式化程序

日志格式化程序设置将日志行打印到主输出流的方式。要创建自定义格式化程序,需要实现 LogFormatter 接口。

    class MyFormatter implements \MarckDevs\SimpleLogger\Interfaces\LogFormatter{
        public function format($string, $data = []){
            $my_format = "{date}- {lv}- {msg}";
            // generate the array with the necessaries keys
            $arr = \MarkDevs\SimpleLogger\SimpleFormatter::gen_arr($string, $data);
            // format the string
            return \MarkDevs\SimpleLogger\SimpleFormatter::set_data($string, $arr);
        }
    }

拥有自定义格式化程序后,可以通过静态方法或构造函数将其设置到日志记录器中

\MarckDevs\SimpleLogger\SimpleLogger::set_log_format(new MyFormatter());

在两种情况下,格式化程序都是全局设置的。

日期格式化

默认的日期格式是西班牙格式:d-m-Y H:i:s,但可以通过创建一个实现 DateFormatter 接口的自定义格式来更改。

    class MyDateFormatter implements\MarckDevs\SimpleLogger\Interfaces\DateFormatter{

        public function get_date($date /*DateTime object*/): String {
            // custom format
            $format = "Y-m-d H:i:s"; // php format
            return $date->format($format);
        }
    }

要设置到日志记录器,就像之前一样,可以在构造函数或使用静态方法中设置

    \MarckDevs\SimpleLogger\SimpleLogger::set_date_format(new MyDateFormatter());

设置日志级别

要设置日志记录器的日志级别,我们有一个静态方法 set_log_level(int),它需要一个 LogLevel 常量。

\MarckDevs\SimpleLoggerSimpleLogger::set_log_level(\MarckDevs\SimpleLogger\LogLevels::INFO)

文件路径

当使用 {file} 选项查看文件路径时,不要显示完整路径,只显示文件名和相同的父目录。父目录的数量可以通过设置静态方法 set_dir_level(int) 来更改。如果设置为2级,则只显示2个目录父级。