dbeurive / log
此包实现了一个简单的日志服务,将消息写入文件
2.0.4
2019-02-07 15:09 UTC
Requires
- php: >=5.6.0
This package is not auto-updated.
Last update: 2024-09-14 01:14:54 UTC
README
此包实现了一个简单的日志服务,将消息写入文件。
注意
请注意,每次向文件添加消息时,都会打开和关闭LOG文件。相对于性能,这种策略不是最好的。然而,它使LOG文件的管理更加容易。如果你曾经遇到过未引用的文件,那么你就理解为什么了。
在实践中,一个未引用的文件是指当你列出目录内容时不会显示的文件,尽管它确实存在于目录中。当你注意到分区空间不足时,你经常会遇到这种情况:可用空间越来越少,但分区中所有(可见)文件的大小都没有变化。通常,一个进程会打开一个(LOG)文件,而在这个过程中文件被删除,尽管它仍然被该进程打开和写入。
概述
use dbeurive\Log\Logger;
// Available level:
//
// * Logger::LEVEL_FATAL
// * Logger::LEVEL_ERROR
// * Logger::LEVEL_WARNING
// * Logger::LEVEL_SUCCESS
// * Logger::LEVEL_INFO
// * Logger::LEVEL_DATA
// * Logger::LEVEL_DEBUG
// 20190126111327 5c4c32c743390 FATAL R This is a fatal error
// 20190126111327 5c4c32c743390 ERROR R This is a standard error
$logger = new Logger('log-info.log', Logger::LEVEL_INFO);
$logger->fatal("This is a fatal error");
$logger->error("This is a standard error");
$logger->warning("This is a warning");
$logger->success("This is a success");
$logger->info("This is a informative message");
$logger->info("This is a multiline informative message\nother line.");
$logger->data("This is a data"); // Not written
$logger->data(array('a' => 1)); // Not written
$logger->debug('This is a debug'); // Not written
// 20190126111327 123 FATAL R This is a fatal error
// 20190126111327 123 ERROR R This is a standard error
$session_id = '123456';
$logger = new Logger('log-info.log', Logger::LEVEL_INFO, $session_id);
$logger->fatal("This is a fatal error");
$logger->error("This is a standard error");
日志生成器生成的日志看起来像
Timestamp SessionId Level LinearizationFlag Message
时间戳格式为"YYYYMMDDHHMMSS
"
YYYY
:年份的四位表示。MM
:月份的两位表示(带前导零)。DD
:月份中的日期两位表示(带前导零)。HH
:24小时制中小时两位表示(带前导零)。MM
:分钟两位表示(带前导零)。SS
:秒两位表示(带前导零)。
如果没有指定会话,则Logger构造函数通过调用uniqid()
创建会话ID。
级别可以是:FATAL
、ERROR
、WARNING
、INFO
、DATA
或DEBUG
。
线性化标志可以是L
或R
L
:线性化。此值表示消息已被线性化。消息被线性化是因为它们由多行组成。您可以通过调用方法Logger::delinearize($linearized_message)
从线性化值获取原始值。请注意,线性化算法是用于URI编码的算法。R
:原始。此值表示消息已被写入而未做修改。
安装
从命令行
composer require dbeurive/log
从你的composer.json文件
{ "require": { "dbeurive/log": "*" } }
API
构造函数
__construct($in_path, $in_level, $in_opt_session_id=null)
$in_path
:LOG文件的路径。$in_level
可以是Logger::LEVEL_FATAL
:只有标记为“FATAL”的消息将被打印到LOG文件。Logger::LEVEL_ERROR
:只有标记为“FATAL”和“ERROR”的消息将被打印到LOG文件。Logger::LEVEL_WARNING
:只有标记为“FATAL”、“ERROR”和“WARNING”的消息将被打印到LOG文件。Logger::LEVEL_SUCCESS
:只有标记为“FATAL”、“ERROR”、“WARNING”、“SUCCESS”的消息将被打印到LOG文件。Logger::LEVEL_INFO
:只有标记为“FATAL”、“ERROR”、“WARNING”、“SUCCESS”、“INFO”的消息将被打印到LOG文件。Logger::LEVEL_DATA
:只有标记为“FATAL”、“ERROR”、“WARNING”、“SUCCESS”、“INFO”、“DATA”的消息将被打印到LOG文件。Logger::LEVEL_DEBUG
:所有消息都将被打印到LOG文件。
$in_opt_session_id
:可选会话ID。此字符串将被添加到所有LOG行。
对象方法
setNewLine(string $in_delimiter)
:设置用作换行符的字符序列。默认值为 "\n"。fatal(string $in_message)
:记录一个致命错误。error(string $in_message)
:记录一个错误。warning(string $in_message)
:记录一个警告信息。success(string $in_message)
:记录一个成功信息。info(string $in_message)
:记录一个信息性消息。data(mixed $in_message)
:记录一个消息(字符串、数值或布尔值)或数据(数组、对象或资源)。debug(string $in_message)
:记录一个调试信息。
类方法
needLinearization(string $in_text)
:测试一个文本是否需要线性化。linearize(string $in_text)
:线性化给定的文本。delinearize(string $in_text)
:反线性化给定的文本。getLevelFromName($in_level_name)
:返回表示给定级别名称的整数值,通过其名称识别。