marck-devs / simple-logger
简单的PHP日志库
1.0.2
2021-09-09 23:04 UTC
Requires
- php: >=7.3.0
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_format 是 DateFormatter 接口实现,默认为 SimpleDateFormatter
- $log_format 是 LogForammtter 接口实现,默认为 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个目录父级。