此包实现了一个简单的日志服务,将消息写入文件

2.0.4 2019-02-07 15:09 UTC

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。

级别可以是:FATALERRORWARNINGINFODATADEBUG

线性化标志可以是LR

  • 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):返回表示给定级别名称的整数值,通过其名称识别。

API非常简单,文档丰富,您可以查看这个示例